问题标签 [quart]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
201 浏览

python - Flask - 在某些路线上不一致地获得 404

问题很简单

最后一条路线给了我一个 404,即使它遵循与上述相同的逻辑。

这里发生了什么?

如果我能更好地设计我的路线,我愿意接受建议,这是一个简单的主/细节/CRUD 应用程序

(在我实际使用 Quart 时标记 Quart,但现在我认为这并不重要,因为它与烧瓶具有相同的 api)

0 投票
1 回答
163 浏览

python - 夸脱的 FLASK_APP

我对利用Quart中可用的一些异步机制非常感兴趣。较大的 Flask 应用程序可以放在中,我的也是。

然后,他们需要FLASK_APP使用该包的名称设置环境变量。

有没有一种等效的方法可以用 Quart 应用程序做到这一点?谢谢。

0 投票
0 回答
469 浏览

python - Quart 是否有任何 Socket.IO 集成?

我正在使用 Quart,我真的很想将 Socket.IO 与它一起使用,但我找不到 Quart 的 Socket.IO 集成,仅适用于 Flask。我应该尝试烧瓶版本还是没有办法?

0 投票
1 回答
2070 浏览

django - ASGI 框架生命周期错误,在没有生命周期支持的情况下继续

使用 django 创建项目,并通过 chrome audit 审核代码后,它显示

不对所有资源使用 HTTP/2 2 个请求未通过 HTTP/2 提供服务

为了解决这个错误,我遵循了这个教程

https://medium.com/python-pandemonium/how-to-serve-http-2-using-python-5e5bbd1e7ff1

以及使用为 quart 指定的代码时

我明白了

/home/avin/Documents/projects/portfolio/portfolio_env/lib/python3.6/site-packages/quart/app.py:1320: UserWarning: Additional arguments, ssl, are not yet supported
“Additional arguments, {}, are尚不支持".format(','.join(kwargs.keys())),在 https://localhost:5000上运行(CTRL + C 退出)[2019-11-06 18:30:18,586] ASGI框架生命周期错误,在没有生命周期支持的情况下继续

而且我也无法通过https://localhost:5000加载网页

0 投票
1 回答
636 浏览

nginx - Quart(ASGI Flask 替代品)可以通过 nginx 代理吗?

我目前有一个通过 uWSGI 在 Nginx 后面代理的 Flask 应用程序。由于我对 asyncio 和 websockets 的需求,我更愿意切换到 Quart。

我使用 nginx 来管理身份验证并高效/简单地提供静态文件。通过转换到 Quart 来保持基本相同的配置会很好,而不是全部丢弃并裸机运行 Hypercorn;并将我所有的静态路由/身份验证迁移到 Quart 应用程序中。

在 nginx 后面代理 Quart 需要哪些配置设置?也许更一般地说,Nginx 可以代理 ASGI 应用程序吗?这是明智的做法吗?

0 投票
0 回答
579 浏览

quart - 将文件上传到基于夸脱的服务器

我正在尝试将我的 Flask 服务器转换为 Quart。

我有一个包含文件输入的表单,我将其发送到服务器。它曾经与 Flask 完美配合,但现在我无法发送文件。

这是有效的代码:

发送代码为:

我的烧瓶代码使用了这些文件,并且收到了状态为 200 的加载事件。

我的夸脱代码如下:

现在我进入“上传文件错误”分支,即收到的进度事件请求状态不是 200(我没有收到任何错误事件请求)。

我现在加载的请求状态为 413(请求太大?)。服务器端不记录任何异常或警告。

任何想法?

0 投票
2 回答
749 浏览

python - 在 Google App Engine 中部署 Quart Python 应用程序

我正在尝试通过 Google Cloud 的 App Engine Standard 部署基于 Quart 的 python 应用程序。但是,我不断收到以下错误:

我知道 Quart 是一种 ASGI 解决方案,而 Google App Engine 是一种无服务器设置。将 quart 部署到 AWS Lambda 的建议之一是使用 Magnum。这也适用于 Google Cloud App Engine 吗?

任何帮助,将不胜感激。

0 投票
1 回答
558 浏览

nginx - 即使使用 SSL 证书,Quart 上的不和谐 OAUTH 也会收到 InsecureTransportError

最近我一直在做一个网站项目,该项目允许用户使用他们的 Discord 帐户登录以使用他们的帐户浏览网站。

该网站使用 Flask-Discord 库,Quart 作为我的 WSGI Web 框架,Hypercorn 作为我的生产服务器,Nginx 作为代理将 Web 请求传递到我的 Hypercorn 套接字。我已经使用 Certbot-Nginx 设置了 SSL 证书,并使用 Let Encrypt 作为证书颁发者。但是,在用户被重定向到 Discord 登录页面后,用户登录到 Discord 并向我的 Quart 服务器请求回调我收到以下错误:

该网站已设置并在临时使用 noip 的域设置和 SSL 证书有效的情况下正常工作,使所有请求重定向到 HTTPS 而不是 HTTP。

是否有可能因为 SSL 证书是使用 Nginx 设置的,Python OAuth2 库只是不知道 SSL 证书?考虑到所有请求都被重定向到 HTTPS,这似乎不太可能。

我发现很多人建议防止此类错误,只需更改 OAuth 环境变量以允许不安全的传输,但我不想损害网站的安全性。

关于为什么会发生这种情况的任何想法都会非常有帮助。

谢谢

0 投票
1 回答
811 浏览

flask - 从 Quart 中的另一个任务访问 app_context

我的 Quart 应用程序是使用 create_app 工厂方法创建的。

我还通过 create_task 方法将第三方库合并为附加任务。

我将一个回调函数传递给这个库,它更新我的数据库(通过 SQLAlchemy)。不幸的是,这不起作用并引发异常:

“尝试在相关上下文之外访问应用程序”

推送应用上下文不起作用:

from quart import current_app as app

async with app.app_context():

查看 Quarts 上下文文档:https ://pgjones.gitlab.io/quart/contexts.html 原因很明显,因为第三方任务中不存在该应用程序。

每个请求都存在这两个上下文,并允许解析全局代理 current_app、request 等。请注意,这些上下文是任务本地的,因此如果任务是由 ensure_future 或 create_task 生成的,则这些上下文将不存在。

有没有人有任何其他解决方案来从另一个任务中获取应用程序上下文?

编辑 它仍然不起作用。我正在使用夸脱 0.10.0。我的应用程序的一个更详细的示例如下所示:

第三方基本上是这样的:

我的回调函数在另一个模块中,我传递给 third_party 实例:

如果 app_context 自动从具有应用上下文的任务复制到创建的任务,为什么我的示例不起作用?

在 with app_context 语句中的 await third_party.start() 调用 loop.create_task(run()) ,它运行我分配的回调函数。那么为什么这个回调中没有 app_context 可用呢?

0 投票
1 回答
1351 浏览

server - 为什么用 Hypercorn 运行 Quart 应用程序/它不是自动的吗?

如果您检查Quart库,app.run()只需建立一些配置然后使用asyncio.run(serve(self, config)),其中 serve 来自from hypercorn.asyncio import serve

因此,即使您通过 运行Quart应用程序python myapp.py,它不是已经在使用Hypercorn服务器了吗?

特别是, this 和 running via 有什么区别hypercorn myapp:app

https://pgjones.gitlab.io/quart/deployment.html

不建议在生产中直接运行 Quart(通过 run())。相反,建议使用 Hypercorn 或替代 ASGI 服务器运行 Quart。Hypercorn 与 Quart 一起安装,默认情况下用于服务请求(例如使用 run())

所以听起来,即使默认情况下使用Hypercorn来服务请求,run()也不建议使用run()? 还有人困惑吗?