芹菜击败不是从Heroku开始

Jar*_*uen 5 python heroku celery django-celery celerybeat

我有一个我在Heroku上启动的应用程序,但是当我启动服务器时,Celery节拍过程无法启动.

Procfile

web: gunicorn -w 4 connect.wsgi
celery: python manage.py celeryd -c 3 --beat
Run Code Online (Sandbox Code Playgroud)

在Heroku应用程序启动后,可以看到工作人员已启动:

$ heroku ps

=== web (Free): gunicorn -w 4 connect.wsgi (1)
web.1: starting 2016/07/13 16:17:18 -0400 (~ 9s ago)

=== celery (Free): python manage.py celeryd -c 3 --beat (1)
celery.1: up 2016/07/13 16:17:25 -0400 (~ 2s ago)
Run Code Online (Sandbox Code Playgroud)

但是,为了让Celery击败进程运行,我必须在Heroku中明确地启动它:

heroku run python manage.py celerybeat
Run Code Online (Sandbox Code Playgroud)

Celery beat在当地推出.这是Heroku的限制还是我做错了什么?

Tim*_*ayi 7

如果您在具有单个 dyno 的免费层 heroku 上运行,那么您最好的选择是使用 foreman 的 honcho python 克隆,这是一种用于管理基于 Procfile 的应用程序的工具。克隆https://github.com/nickstenning/honcho,这将允许您为 celery beat/workers 分叉多个进程。您仍将受到 heroku 的免费层内存 512MB ram 和 dyno 运行时间的限制。所以对于快速开发和 poc 来说没有什么太大的好处

安装 honcho

pip 安装本站

确保 honcho 是您的 request.txt 的一部分

pip冻结>需求.txt

创建一个 ProcfileHoncho 存储您所有的原始 Procfile 内容

ProcfileHoncho

web: gunicorn myDjangoApp.wsgi --log-file -
worker1: celery -A myDjangoApp beat -l info
worker2: celery -A myDjangoApp worker -l info
Run Code Online (Sandbox Code Playgroud)

配置文件

web: honcho start -f ProcfileHoncho
Run Code Online (Sandbox Code Playgroud)

确保您通过配置变量加载您的代理 URL 并指向您的免费托管代理。相信您可以通过快速的谷歌搜索找到一位免费经纪人

git push heroku master
heroku logs -t 
Run Code Online (Sandbox Code Playgroud)

查看日志,看看它们是否有任何错误。在这一点上,你应该很高兴。


小智 4

如果我没记错的话,Heroku 只允许在一个应用程序中使用两个免费的 Dyno 实例。