【发布时间】:2020-02-18 11:22:20
【问题描述】:
我目前有一个使用实现 WSGI 标准的 uWSGI Web 服务器的烧瓶 Web 应用程序,需要将此应用程序迁移到 uvicorn 实现 ASGI 标准的 Web 服务器。
如果我从许多可用选项中选择使用 uvicorn Web 服务器,比如 Hypercorn、Daphne,那么我应该从可用选项中选择哪个 Web 微框架(而不是烧瓶),比如 Starlette、Quart、Django/Channels 来获取这次迁移顺利吗?
层次结构是这样的:
Uvicorn: an ASGI server Starlette: (uses Uvicorn) a web microframework FastAPI: (uses Starlette) an API microframework with several additional features for building APIs, with data validation, etc.
正如我目前所读到的,
Quart 是一个基于 Asyncio 的 Python Web 微框架。它的目的是 提供在 Web 上下文中使用 asyncio 的最简单方法,尤其是 与现有的 Flask 应用程序。
和
FastAPI 已被证明是 Python 网络框架,拥有最好的框架之一 由第三方基准衡量的性能,这要归功于 基于 Starlette 并由 Starlette 提供支持。 https://fastapi.tiangolo.com/benchmarks/
请建议最好的方法
【问题讨论】:
-
第一个问题可以是“你为什么需要”迁移?如果是这样,请注意,一旦您迁移到异步框架,您还必须将一些库迁移到异步(例如,特别是块 IO 库,例如数据库库,否则迁移到异步是没有意义的)。这样做你会碰到不太成熟的库并且可能会遇到新的问题。所以真的问自己第一个问题。
标签: flask uwsgi fastapi asgi uvicorn