Luc*_* Gu 3 python django websocket gunicorn docker
所以我在这个 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 差异?)或者如果有什么方法可以让我的 Django 频道仍然有效运行 gunicorn?谢谢!!
使用 ASGI 时,对于异步服务器 (websockets),您应该使用异步服务器,例如 Daphne 或 Uvicorn,Django 文档有关于如何部署它们的示例。
如果您想直接使用 uvicorn,您可以执行以下操作:
uvicorn myproject.asgi:application --host 0.0.0.0 --port 8000
Run Code Online (Sandbox Code Playgroud)
您还可以使用 worker 类通过gunicorn运行 uvicorn :
gunicorn myproject.asgi:application -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8000
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2345 次 |
| 最近记录: |