如何在Heroku上使用Channels和Celery部署Django?

Ali*_*and 2 django heroku celery

如何在Heroku平台上部署以下堆栈?

  • Django的
  • Django频道
  • 芹菜

肯定的局限在于Procfile.

要使用Celery部署Django,它将类似于:

web: gunicorn project.wsgi:application
worker: celery worker --app=project.taskapp --loglevel=info
Run Code Online (Sandbox Code Playgroud)

使用Channels部署Django时:

web: daphne project.asgi:channel_layer --port $PORT --bind 0.0.0.0 -v2
worker: python manage.py runworker -v2
Run Code Online (Sandbox Code Playgroud)

web过程可以使用ASGI,但worker过程将由Channels使用,我不知道Celery如何与它一起启动.

Dan*_*man 5

您可以根据需要在Procfile中包含任意数量的条目.唯一特别的是"web",因为这是Heroku期望接收Web请求的那个,也是唯一一个会自动启动的请求.您可以使用自己的名字来完成剩下的工作:

web: gunicorn project.wsgi:application
celeryworker: celery worker --app=project.taskapp --loglevel=info
channelsworker: python manage.py runworker -v2
Run Code Online (Sandbox Code Playgroud)

现在你可以做heroku ps:scale celeryworker=1heroku ps:scale channelsworker=1开始其他两个过程.

有关更多信息,请参阅Heroku Procfile文档.