您的问题是,您正在同一上下文/行中调用这两个进程,而一个永远不会被调用,因为第一个永远不会“结束”。
此过程: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