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

Python Django App deployment on Azure app service with celery and websocket

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

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

所以应用程序的 Web 部分 运行ning 在 daphne 网络服务器上,工作部分 运行ning 在 上芹菜.

在 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 应用程序服务上尝试同样的操作时,他们提供了一个单一的启动命令来在构建后启动服务器。

我有 运行 服务器的 web 和 worker 命令。我尝试使用 sh 文件来执行 Web 和 worker 命令。但是不行

下面是我面临的问题

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

欢迎任何帮助或指导

提前致谢......

我通过使用带有简单 & 选项的基本 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