gpt4 book ai didi

python - 如何在仍然使用 WebSocket 的同时运行 Gunicorn

转载 作者:行者123 更新时间:2023-12-02 18:13:31 32 4
gpt4 key购买 nike

所以我在这个 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 channel 运行 gunicorn 仍然有效?谢谢!!

最佳答案

当使用 ASGI 时,对于异步服务器(websockets),你应该使用异步服务器,比如 Daphne 或 Uvicorn,Django documentation有关于如何为它们进行部署的示例。

如果您想直接使用 uvicorn,您可以执行以下操作:

uvicorn myproject.asgi:application --host 0.0.0.0 --port 8000

您还可以使用 worker 类通过 gunicorn 运行 uvicorn:
gunicorn myproject.asgi:application -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8000

关于python - 如何在仍然使用 WebSocket 的同时运行 Gunicorn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59978162/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com