使用 ASGI 服务器手动部署¶
ASGI(异步服务器网关接口)旨在为像 Litestar 这样的异步 Python Web 框架和异步 Web 服务器之间提供标准接口。
有几个流行的 ASGI 服务器可用,您可以选择最适合您应用程序需求的服务器。
何时使用¶
使用 ASGI 服务器手动运行应用程序通常仅适用于开发和测试环境。
通常建议在容器化环境中运行生产工作负载,例如 Docker 或 Kubernetes,或通过进程控制系统,例如 Supervisor 或 systemd。
替代方案¶
对于不同的部署场景,请考虑以下替代方案:
- systemd:
一个系统和服务管理器,集成到许多 Linux 发行版中以管理系统进程。
备注
官方文档即将推出
- Supervisor:
一个进程控制系统,可用于自动启动、停止和重启进程;包括 Web UI。
- Docker:
适用于容器化环境,提供隔离和可扩展性。
选择 ASGI 服务器¶
安装 ASGI 服务器¶
运行 ASGI 服务器¶
假设您的应用程序的定义方式与 最小示例 相同,您可以使用以下命令运行 ASGI 服务器:
使用默认配置运行 Uvicorn¶
uvicorn app:app
控制台输出¶
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
使用默认配置运行 Hypercorn¶
hypercorn app:app
控制台输出¶
[2023-11-12 23:31:26 -0800] [16748] [INFO] Running on http://127.0.0.1:8000 (CTRL + C to quit)
Gunicorn 与 Uvicorn workers¶
重要
弃用通知
自 Uvicorn 0.30.0+ 包含原生 worker 管理以来,Gunicorn+Uvicorn 模式被视为 ASGI 部署的遗留模式。
Uvicorn 添加了一个新的多进程管理器,旨在完全替代 Gunicorn。有关实现细节,请参阅拉取请求 #2183。
对于新部署,请直接使用 Uvicorn。