2

我知道 Django 是请求/响应周期,而 Django Channels 是不同的,我的问题与此无关。

我们知道 uWSGI/gunicorn 创建工作进程并且可以配置在线程中执行每个请求。这样它就可以在具有 10 个线程的单个 uWSGI 工作进程中“同时”(非并行)服务 10 个请求。

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

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

4

2 回答 2

2

我想你要的是达芙妮频道文档本身中提到了它。

于 2017-04-06T04:37:06.210 回答
1

Daphne提供了使用共享 FD扩展流程的选项。不幸的是,它没有按预期工作。

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

$ uvicorn project.asgi --workers 4

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

于 2018-05-05T14:08:08.227 回答