Django信道的uWSGI等效

Django信道的uWSGI等效,django,django-channels,Django,Django Channels,我知道Django是请求/响应周期,Django通道是不同的,我的问题不是这个 我们知道uWSGI/gunicorn创建工作进程,并且可以配置为在线程中执行每个请求。因此,它可以在一个具有10个线程的uWSGI工作进程中“并发”(而不是并行)地服务10个请求 现在让我们假设每个web客户机都希望使用Django通道创建websocket,根据我有限的理解(使用香草实现),它将在单个线程中处理每条消息,这意味着,要同时处理x个连接,需要x个通道工作进程。我知道有人会建议增加进程的数量,我不是来讨论

我知道Django是请求/响应周期,Django通道是不同的,我的问题不是这个

我们知道uWSGI/gunicorn创建工作进程,并且可以配置为在线程中执行每个请求。因此,它可以在一个具有10个线程的uWSGI工作进程中“并发”(而不是并行)地服务10个请求

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


我的问题很简单,现有的库中有没有类似的功能与uWSGI/gunicorn在线程中执行消费函数的库?

我想你是在问。它本身就是被提到的。

提供了一个扩展过程的选项。不幸的是,它并没有像预期的那样工作

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

$ uvicorn project.asgi --workers 4

我一直在生产中使用这个,它看起来已经足够好了

这似乎值得商榷。我看不到对任何类似通道层或组的支持。看起来你需要使用自己的应用程序类自己构建它。为每个Daphne工人设置一个插座并让Nginx分散负载非常简单。我使用HAProxy,它允许我有一个插座和任意数量的工人。通过在重新启动工作进程之前排空工作进程,我可以在不中断任何连接的情况下进行部署。你是对的。我们可以使用nginx/HAProxy运行多个daphne实例和负载平衡。我最初是这样做的。当我遇到独角兽时,我试着换了那个。