2

如果您检查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()? 还有人困惑吗?

4

1 回答 1

8

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

是的。

特别是,这与通过 hypercorn myapp:app 运行有什么区别?

我想保留run开发方法,以便它可以默认做出对开发有利但对生产不利的决策。目前的一个例子是该run方法默认使用重新加载器(每当代码更改时重新加载应用程序),这在开发时很好,但在生产中存在性能问题。另一个例子是该run方法不会使用多个工人,这再次导致生产性能变差。

(我是Quart作者)

于 2020-01-22T11:18:16.117 回答