imr*_*mos 27 python django gunicorn asgi uvicorn
我目前正在 Django 中开发一个服务,它使用一个缓慢的外部 API(需要大约 10 秒才能获得响应),这意味着与我的服务器的连接保持打开状态,等待外部 API 响应,并占用工作时间/资源。
我知道我可以使用 gunicorn 的线程或 gevent 工作人员来添加并发性,但似乎无法掌握将 gunicorn 与 gevent 工作人员一起使用和将 uvicorn(或任何其他服务器)与 asgi 接口一起使用之间的确切区别。
使用其中一种的标准是什么?
Django 仍然不完全支持 async/await 视图。如果我坚持使用 gevent 工人会更好吗?
clm*_*mno 10
Gunicorn 有一个 pre-fork 工人模型
一个 pre-fork 工作模型基本上意味着一个 master 创建处理每个请求的 fork。fork 是一个完全独立的 *nix 进程(Source)。
Uvicorn 是一个运行 uvloop 的 ASGI 服务器
Python async 需要一个事件循环才能使用它的异步功能。并且uvloop是asyncio loop的替代品。因此,如果您的代码中有异步调用,您可以在uvloop内部使用或uvicorn用作您的 ASGI 服务器。注意:您仍然只有一个事件循环。您可以选择使用gunicorn和uvicorn拥有多个工作人员并使用 uvloop。
在您的 django 应用程序中,在uvloop内部使用(如果您选择)并gunicorn用作您的 ASGI是有意义的。
| 归档时间: |
|
| 查看次数: |
7732 次 |
| 最近记录: |