如何同时运行Daphne和Gunicorn?

我正在使用django-channels,因此我需要使用daphne,但是对于静态文件和其他我想使用gunicorn的东西。我可以与daphne一起启动gunicorn,但是不能同时启动它们两个。

我的问题是,我应该同时启动它们还是有更好的选择? 如果应该怎么办?

这是我正在运行的服务器命令:

gunicorn app.wsgi:application --bind 0.0.0.0:8000 --reload && daphne -b 0.0.0.0 -p 8089 app.asgi:application

PS: 我在location中将//ws/中的gunicorndaphne中的nginx.conf拆分了。

jiansiliangjian 回答:如何同时运行Daphne和Gunicorn?

您的问题是,您正在同一上下文/行中调用这两个进程,而一个永远不会被调用,因为第一个永远不会“结束”。

此过程:gunicorn app.wsgi:application --bind 0.0.0.0:8000 --reload

在任何时候都不会终止,因此&&命令永远不会运行,除非您手动杀死该命令,在那一点上,我不确定这不会完全杀死整个过程链。

如果您想同时运行这两个程序,则可以使用&例如,

(无法测试,但应该可以)

gunicorn app.wsgi:application --bind 0.0.0.0:8000 --reload & daphne -b 0.0.0.0 -p 8089 app.asgi:application &

教一个人在这类问题上钓鱼的信息是here

我敢肯定,通过在后台运行这些控制台,您将失去通常需要的常规控制台日志记录,因此,我建议您查看nohup而不是&或发送日志带有日志记录实用程序的地方,因此您不会盲目。

对于其他选项,如果您打算扩展到大量用户,则可能需要100多个我才能运行两台服务器,一台用于wsgi django http请求,一台用于asgi daphne ws请求。无论您需要什么,都可以在两者之间使用nginx代理,然后就完成了。 That's also what channels recommends for larger applications.

使用/ ws /之类的通用路径前缀将WebSocket连接与普通HTTP连接区分开是一种很好的做法,因为这将使在某些配置下将Channels部署到生产环境更加容易。

特别是对于大型站点,可以配置生产级HTTP服务器(如nginx),根据路径将请求路由到(1)普通HTTP请求的生产级WSGI服务器(如Gunicorn + Django),或(2 )用于WebSocket请求的生产级ASGI服务器(例如Daphne + Channels)。

请注意,对于较小的站点,您可以使用更简单的部署策略,其中Daphne可以处理所有请求-HTTP和WebSocket-而不是使用单独的WSGI服务器。在此部署配置中,不需要/ ws /之类的通用路径前缀。

,

不需要同时运行。Daphne是HTTP,HTTP2和WebSocket协议服务器。 在以下链接中查看自述文件: https://github.com/django/daphne

本文链接:https://www.f2er.com/2485793.html

大家都在问