使用 celery 和 websocket 在 Azure 应用程序服务上部署 Python Django 应用程序

标签 python celery azure-web-app-service azure-webapps daphne

我正在尝试将我的 Django 应用程序从 Heroku 移动到 Azure 应用服务。

该应用程序由 Websocket 和 Rest API 组成。

因此,应用程序的 Web 部分在 daphne Web 服务器上运行,工作部分在 celery 上运行。

在 Heroku 中,我的 Procfile 看起来像

web: daphne backend.asgi:application --port $PORT --bind 0.0.0.0 -v 0
worker: celery worker -A backend --loglevel=debug --concurrency=8

当我在 Azure 应用程序服务上尝试相同的操作时,他们提供了一个启动命令来在构建后启动服务器。

我有网络和工作命令来运行服务器。我尝试使用 sh 文件来执行 Web 和工作命令。但这行不通

以下是我面临的问题

  1. Daphne 服务器命令在 azure 中不起作用,但当我更改它时 对于gunicorn它可以工作[但没有WebSocket支持:(通过使用gunicorn]
  2. 此外,我不知道如何在 azure 应用服务中运行 Web 和 Worker,因为它们有 只有一个启动命令选项

欢迎任何帮助或指导

提前致谢......

最佳答案

我通过使用基本的 DockerFile 和一个简单的 & 选项得到了解决方案。 我已附上我在 azure 中使用的自定义 DockerFile

FROM python:3.7
RUN mkdir -p /opt/services/app/src
WORKDIR /opt/services/app/src
ADD . /opt/services/app/src
RUN pip install -r requirements.txt
EXPOSE 8000
CMD python manage.py collectstatic --no-input
CMD python manage.py migrate
CMD daphne backend.asgi:application --port 8000 --bind 0.0.0.0 -v 0 & celery worker -A backend --loglevel=debug --concurrency=8

关于使用 celery 和 websocket 在 Azure 应用程序服务上部署 Python Django 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59102869/

相关文章:

Python 多处理——共享 id 的单独进程中的全局变量?

python - 将 svg 保存到临时文件 Python

python - Mysql多动态条件select查询

python - Celery 任务方法没有被调用

python - celery worker sleep 无法正常工作

azure - 如何将下一个js应用程序部署到azure应用程序服务?

python - 我需要计算 python 中同一位置的类似字符,但我不知道如何正确计算,因为我是该程序的新手

django - 生产中的 celery 花安全

azure - 如何在新的Azure CLI中自动生成deploy.cmd?

c# - 在网络聊天中测试无法使用应用程序服务