作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个已在 Heroku 上启动的应用程序,但当我启动服务器时,Celery 节拍进程没有启动。
配置文件
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 beat 进程运行,我必须在 Heroku 中明确启动它:
heroku run python manage.py celerybeat
Celery beat 在本地运行良好。这是 Heroku 的限制还是我做错了什么?
最佳答案
如果您在带有单个 dyno 的免费层 heroku 上运行,那么您最好的选择是使用工头的 honcho python 克隆工具来管理基于 Procfile 的应用程序。克隆 https://github.com/nickstenning/honcho , 这将允许你为你的 celery beat/workers fork 多个进程。您仍然会受到 heroku 的免费层级内存 512MB ram 和 dyno 运行时间的限制。所以对于快速开发和 poc 来说,没有什么太重的东西
安装honcho
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
配置文件
web: honcho start -f ProcfileHoncho
确保您通过配置变量加载您的经纪人 url 并指向您的免费托管经纪人。我相信您可以通过快速谷歌搜索找到一个免费的经纪人
git push heroku master
heroku logs -t
查看日志看是否有任何错误。此时你应该可以开始了。
关于python - celery 打败了 Heroku,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38361040/
我是一名优秀的程序员,十分优秀!