芹菜打败了 Heroku
Celery beat not starting on Heroku
我有一个在 Heroku 上启动的应用程序,但是当我启动服务器时 Celery 节拍进程没有启动。
Procfile
web: gunicorn -w 4 connect.wsgi
celery: python manage.py celeryd -c 3 --beat
启动Heroku应用后可以看到worker启动:
$ 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 的限制还是我做错了什么?
如果我没记错的话,Heroku 只允许在一个应用程序中使用两个免费的 Dyno 实例。
@Jared Goguen:嗨朋友,
您可能需要在 Heroku 中扩展您的工作人员,
Deploying on Heroku
If you already created a Procfile above and attached the appropriate add-ons for the message broker and result store, all that’s left to do is push and scale your app:
git push heroku master
heroku ps:scale worker=1
Of course, at any time you can scale to any number of worker dynos. Now run a task just like you did locally:
heroku run python
>>> import tasks
>>> tasks.add.delay(1, 2)
You should see the task running in the application logs:
heroku logs -t -p worker
如果您的 运行 在带有单个 dyno 的免费层 heroku 上,那么您最好的选择是使用 honcho python foreman 的克隆工具来管理基于 Procfile 的应用程序。克隆 https://github.com/nickstenning/honcho,这将允许你为你的芹菜分叉多个进程 beat/workers。您仍然会受到 heroku 的免费层级内存 512MB ram 和 dyno 运行时间的限制。所以对于快速开发和 poc 来说,没有什么太重的好处了
安装老板
pip install honcho
确保 honcho 是您 requirement.txt
的一部分
pip freeze > requirements.txt
创建 ProcfileHoncho 存储所有原始 Procfile 内容
ProcfileHoncho
web: gunicorn myDjangoApp.wsgi --log-file -
worker1: celery -A myDjangoApp beat -l info
worker2: celery -A myDjangoApp worker -l info
Procfile
web: honcho start -f ProcfileHoncho
确保您通过配置变量加载您的代理 url 并指向您的免费托管代理。相信您可以通过快速 google 搜索
找到一个免费经纪人
git push heroku master
heroku logs -t
查看日志看是否有任何错误。此时你应该可以开始了。
我有一个在 Heroku 上启动的应用程序,但是当我启动服务器时 Celery 节拍进程没有启动。
Procfile
web: gunicorn -w 4 connect.wsgi
celery: python manage.py celeryd -c 3 --beat
启动Heroku应用后可以看到worker启动:
$ 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 的限制还是我做错了什么?
如果我没记错的话,Heroku 只允许在一个应用程序中使用两个免费的 Dyno 实例。
@Jared Goguen:嗨朋友,
您可能需要在 Heroku 中扩展您的工作人员,
Deploying on Heroku
If you already created a Procfile above and attached the appropriate add-ons for the message broker and result store, all that’s left to do is push and scale your app:
git push heroku master
heroku ps:scale worker=1
Of course, at any time you can scale to any number of worker dynos. Now run a task just like you did locally:
heroku run python
>>> import tasks
>>> tasks.add.delay(1, 2)
You should see the task running in the application logs:
heroku logs -t -p worker
如果您的 运行 在带有单个 dyno 的免费层 heroku 上,那么您最好的选择是使用 honcho python foreman 的克隆工具来管理基于 Procfile 的应用程序。克隆 https://github.com/nickstenning/honcho,这将允许你为你的芹菜分叉多个进程 beat/workers。您仍然会受到 heroku 的免费层级内存 512MB ram 和 dyno 运行时间的限制。所以对于快速开发和 poc 来说,没有什么太重的好处了
安装老板
pip install honcho
确保 honcho 是您 requirement.txt
的一部分pip freeze > requirements.txt
创建 ProcfileHoncho 存储所有原始 Procfile 内容
ProcfileHoncho
web: gunicorn myDjangoApp.wsgi --log-file -
worker1: celery -A myDjangoApp beat -l info
worker2: celery -A myDjangoApp worker -l info
Procfile
web: honcho start -f ProcfileHoncho
确保您通过配置变量加载您的代理 url 并指向您的免费托管代理。相信您可以通过快速 google 搜索
找到一个免费经纪人git push heroku master
heroku logs -t
查看日志看是否有任何错误。此时你应该可以开始了。