Django-Channels 的 uWSGI 等价物

uWSGI equivalent for Django-Channels

我知道 Django 是 request/response 循环而 Django Channels 是不同的,我的问题不是关于这个。

我们知道 uWSGI/gunicorn 创建工作进程并且可以配置为在线程中执行每个请求。这样它就可以在具有 10 个线程的单个 uWSGI 工作进程中处理 10 个请求"concurrently"(非并行)。

现在假设每个网络客户端都想使用 Django Channels 创建一个 websocket,根据我有限的理解(使用 vanilla 实现),它将在单个线程中处理每条消息,这意味着要处理 x 数量的消息同时连接,您需要 x 个通道工作进程。我知道有人会建议增加进程数,我不是来讨论这个的。

我的问题很简单,是否有任何现有的库与 uWSGI/gunicorn 执行类似的工作,在线程中执行消费者函数?

我想你是在要求 daphne. It is mentioned in channels document 本身。

Daphne provides an option to scale process using a shared FD。不幸的是,它没有按预期工作。

现在,更好的选择是使用 uvicorn。您可以 运行 多个工人

$ uvicorn project.asgi --workers 4

我一直在生产中使用它,它似乎足够好。