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

时间:2018-02-05 16:10:59

标签: django heroku celery

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

  • Django的
  • Django频道
  • 芹菜

限制肯定在Procfile

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

web: gunicorn project.wsgi:application
worker: celery worker --app=project.taskapp --loglevel=info

在使用频道部署Django时:

web: daphne project.asgi:channel_layer --port $PORT --bind 0.0.0.0 -v2
worker: python manage.py runworker -v2

web进程可以使用ASGI,但频道会使用worker进程,但我看不到Celery如何与它一起启动。

1 个答案:

答案 0 :(得分:5)

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

web: gunicorn project.wsgi:application
celeryworker: celery worker --app=project.taskapp --loglevel=info
channelsworker: python manage.py runworker -v2

现在,您可以执行heroku ps:scale celeryworker=1heroku ps:scale channelsworker=1来启动其他两个流程。

有关详细信息,请参阅Heroku Procfile docs