首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gunicorn gevent worker vs Uvicorn ASGI

Gunicorn gevent worker vs Uvicorn ASGI
EN

Stack Overflow用户
提问于 2020-06-24 04:36:26
回答 1查看 9.4K关注 0票数 30

我目前正在用Django开发一个服务,它使用一个缓慢的外部API (大约需要10秒才能得到响应),这意味着到我的服务器的连接保持打开,等待外部API响应,并占用工作人员的时间/资源。

我知道我可以使用gunicorn的线程或gevent工作线程来添加并发性,但似乎无法掌握在gevent工作线程和uvicorn (或任何其他服务器)的asgi接口中使用gunicorn的确切区别。

使用其中一个的标准是什么?

Django仍然不完全支持async/await视图。如果我只使用gevent worker会不会更好?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-23 11:15:20

Gunicorn有一个预分叉工作者模型

pre-fork worker模型基本上意味着主节点创建fork来处理每个请求。fork是一个完全独立的*nix进程(Source)。

uvloop Uvicorn是一台运行的ASGI服务器

Python async需要一个事件循环才能使用它的异步特性。uvloopasyncio loop的替代方案。因此,如果你的代码中有异步调用,你可以在内部使用uvloop,或者使用uvicorn作为你的ASGI服务器。注意:您仍然只有一个事件循环。您可以选择使用gunicornuvicorn来拥有多个工作进程,并使用uvloop。

在您的django应用程序中,在内部使用uvloop (如果您选择这样做)并使用gunicorn作为您的ASGI是很有意义的。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62543342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档