1

我对 django-channels 和 uvicorn 服务器的主要角色有点困惑。我已经阅读了很多博客,但没有得到太多澄清。

如果我们可以使用通道为 websockets 实现 ASGI 服务器,那么为什么我们需要像 daphene 或 uvicorn 那样单独的 asgi 服务器?

4

1 回答 1

1

Daphne 是一个ASGI 服务器,而 Django Channels 是一个用于 Django 的ASGI 框架。链接取自www.uvicorn.org

下面还提到了另一个博客的参考:

创建 Channels 是为了支持异步协议,如 Websockets 和长轮询 HTTP。Django 应用程序仍然同步运行。Channels 是一个官方的 Django 项目,但不是核心 Django 的一部分。

Django Async 项目将支持在同步代码之外使用异步代码编写 Django 应用程序。异步是 Django 核心的一部分。

两人都由安德鲁·古德温领导。

在大多数情况下,这些是独立的项目。您可以有一个使用其中一个或两个的项目。例如,如果您需要通过 Web 套接字支持聊天应用程序,那么您可以使用 Channels 而不使用 Django 的 ASGI 接口。另一方面,如果你想在 Django 视图中创建异步函数,那么你将不得不等待 Django 对视图的异步支持。

于 2020-04-12T02:07:07.497 回答