如何在heroku服务器中配置django-celery
Posted
技术标签:
【中文标题】如何在heroku服务器中配置django-celery【英文标题】:How to configure django-celery in heroku server 【发布时间】:2016-12-07 07:52:54 【问题描述】:在我的本地环境中,我使用 celery 进行调度任务,它在本地系统中工作我使用 redis 作为工作人员 现在我想在heroku服务器中配置django celery 我尝试在 heroku 应用中使用 heroku-redis 插件
在我的 settings.py 中添加了这些东西:
r = redis.from_url(os.environ.get("REDIS_URL"))
BROKER_URL = redis.from_url(os.environ.get("REDIS_URL"))
CELERY_RESULT_BACKEND = os.environ.get('REDIS_URL')
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TIMEZONE = 'Canada/Eastern'
redis_url = urlparse.urlparse(os.environ.get('REDIS_URL'))
CACHES =
"default":
"BACKEND": "redis_cache.RedisCache",
"LOCATION": "0:1".format(redis_url.hostname, redis_url.port),
"OPTIONS":
"PASSWORD": redis_url.password,
"DB": 0,
在我的 procfile 之后我添加了:
web: gunicorn bizbii.wsgi --log-file -
worker : celery workder -A tasks.app -l INFO
python manage.py celeryd -v 2 -B -s celery -E -l INFO
但任务仍然没有运行
之后我运行日志命令使其返回:
2016-07-30T08:53:19+00:00 app[heroku-redis]: source=REDIS sample#active-connections=1 sample#load-avg-1m=0.07 sample#load-avg-5m=0.075 sample#load-avg-15m=0.07 sample#read-iops=0 sample#write-iops=0 sample#memory-total=15664876.0kB sample#memory-free=13426732.0kB sample#memory-cached=460140kB sample#memory-redis=299616bytes sample#hit-rate=1 sample#evicted-keys=0
然后用这个命令创建测功机:
heroku run bash -a bizbii2
并运行以下命令:
python manage.py celeryd -v 2 -B -s celery -E -l INFO
所以它返回如下错误:
[2016-08-03 08:23:26,506: ERROR/Beat] beat: Connection error: [Errno 111] Connection refused. Trying again in 8.0 seconds...
[2016-08-03 08:23:26,843: ERROR/MainProcess] consumer: Cannot connect to amqp://guest:**@127.0.0.1:5672//: [Errno 111] Connection refused.
Trying again in 8.00 seconds...
请给我建议我们如何在 Heroku 服务器上部署 celery
【问题讨论】:
【参考方案1】:我遇到了这个确切的问题。我用以下行更新了我的 procfile,错误消失了:
worker: celery -A TASKFILE worker -B --loglevel=info
将 TASKFILE 替换为例如:proj.celery
或 proj.tasks
。这取决于您将任务放在哪里。
【讨论】:
以上是关于如何在heroku服务器中配置django-celery的主要内容,如果未能解决你的问题,请参考以下文章
如何使用裸域配置 Google Domains + Heroku
如何设置 Heroku 配置文件,使其在 Heroku 部署的任何终端问题中接受“是”
如何在 Heroku 上使用带有 Axios 和 Vue 的 Postgres 数据库?