我有一个我在Heroku上启动的应用程序,但是当我启动服务器时,Celery节拍过程无法启动。
Procfile
web: gunicorn -w 4 connect.wsgi
celery: python manage.py celeryd -c 3 --beat
可以看到在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)
但是,为了让Celery节拍过程正常运行,我必须在Heroku中明确启动它:
heroku run python manage.py celerybeat
Celery beat在当地推出。这是Heroku的限制还是我做错了什么?
答案 0 :(得分:4)
Heroku only allow two free Dyno instances in one application if I'm not mistaken.
答案 1 :(得分:1)
@Jared Goguen:嗨,朋友,
您可能需要在Heroku中扩展您的工作人员,
在Heroku上部署
如果您已经在上面创建了一个Procfile并为消息代理和结果存储添加了相应的附加组件,那么剩下要做的就是推送并扩展您的应用程序:
git push heroku master
heroku ps:scale worker=1
当然,您可以随时扩展到任意数量的工作人员。现在像在本地一样运行任务:
heroku run python
>>> import tasks
>>> tasks.add.delay(1, 2)
您应该看到应用程序日志中正在运行的任务:
heroku logs -t -p worker