如何在 Heroku 上使用 Channels 和 Celery 部署 Django?
Posted
技术标签:
【中文标题】如何在 Heroku 上使用 Channels 和 Celery 部署 Django?【英文标题】:How to deploy Django with Channels and Celery on Heroku? 【发布时间】:2018-07-15 13:21:03 【问题描述】:如何在 Heroku 平台上部署以下堆栈?
姜戈 Django 频道 芹菜限制肯定在Procfile
。
用 Celery 部署 Django 应该是这样的:
web: gunicorn project.wsgi:application
worker: celery worker --app=project.taskapp --loglevel=info
在使用 Channels 部署 Django 时:
web: daphne project.asgi:channel_layer --port $PORT --bind 0.0.0.0 -v2
worker: python manage.py runworker -v2
web
进程可以使用 ASGI,但 worker
进程将被 Channels 使用,我不知道 Celery 可以如何与它一起启动。
【问题讨论】:
【参考方案1】:您可以在 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=1
和heroku ps:scale channelsworker=1
来启动其他两个进程。
请参阅Heroku Procfile docs 了解更多信息。
【讨论】:
你是我的英雄。非常感谢先生。以上是关于如何在 Heroku 上使用 Channels 和 Celery 部署 Django?的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 Django channels_redis 与 Heroku Redis 建立连接
Django Channels Websockets 立即连接和断开连接
Django 现在在 Heroku 中使用 ASGI + WSGI 的频道