【发布时间】:2020-05-09 17:26:06
【问题描述】:
我有一个用 Django 3 编写的简单的基于 API 的 Web 应用程序。在 Django 文档中有一个关于 ASGI 服务器的 page,并提到了两个选项:Daphne 和 Uvicorn。不幸的是,他们没有提供任何关于特定选择的好处的描述,所以在选择其中一个时我很困惑。
围绕两者编写 Django 应用程序有什么不同(如果有的话),是否需要注意任何性能或稳定性问题?
基本上,使用 Uvicorn 代替 Daphne 有很大的不同吗?我的服务器在 Ubuntu 上运行,如果这很重要的话。
【问题讨论】:
-
为什么要使用 ASGI 服务器?你在任何地方都使用异步代码吗?
-
@TomCarrick 我想在某些部分开始使用,主要是尝试通过数据处理来加速一些操作。我还认为,当我将 gunicorn 换成其他东西时,这可能会影响整体服务器性能
-
Django Channels 提供了一个在 Django 中使用异步的框架。我有一些长期运行的工作,我想把 websockets 放在前面。一种模式是有一个单独的异步套接字服务器将消息放入代理,然后 Django 服务订阅它。频道是 Uvicorn vs Daphne 的一个原因。对于常规 Django 应用程序的异步协程性能,gunicorn can run workers in greenlets 通过利用 eventlet 或 gevent 而不是线程。
-
Hypercorn现在也被提及了。
标签: django daphne asgi uvicorn