所以我正在为这个python聊天应用程序项目使用docker。
我最初python manage.py runserver 0.0.0.0:8000
在docker-compose中拥有命令。
我发现如果我想在网络上部署我的应用程序(例如heroku),应该切换到gunicorn。我发现的教程说只需将docker-compose中的命令更改为gunicorn myproject.wsgi -b 0.0.0.0:8000
。我这样做了,所有的websocket连接都中断了。由于websocket仍处于CONNECTING状态,因此发送失败,然后握手失败,状态码为404。所有设置与以前相同,除了一行。只是想知道我还需要更改什么以使websocket与gunicorn一起使用?谢谢
编辑:在互联网上进行了一些挖掘之后,似乎不应该将gunicorn与websocket一起运行(我想是wsgi asgi的区别吗?)如果有人可以告诉我我可以使用代替gunicorn的Web服务器,将不胜感激,还是有什么办法可以在我的Django频道仍然正常运行的情况下运行gunicorn?谢谢!!
在使用ASGI时,对于异步服务器(Websocket),您应该使用异步服务器,例如Daphne或Uvicorn。Django文档提供了有关如何为两者部署的示例。
如果您想直接使用uvicorn,可以执行以下操作:
uvicorn myproject.asgi:application --host 0.0.0.0 --port 8000
您也可以使用worker类在uwicorn中运行uvicorn :
gunicorn myproject.asgi:application -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8000
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句