首页 文章

如何在heroku服务器中配置django-celery

提问于
浏览
0

在我的本地环境中我使用celery进行计划任务它在本地系统中工作我使用redis作为 Worker 现在我想在heroku服务器中配置django芹菜我试图在heroku app中使用heroku-redis附加组件

在我的settings.py CELERY STUFF中添加了这些东西

#BROKER_URL = 'redis://localhost:6379'
#BROKER_URL = 'os.environ['REDIS_URL']'
#BROKER_URL = os.environ.get('REDIS_URL', 'redis://localhost:6379')
r = redis.from_url(os.environ.get("REDIS_URL"))
BROKER_URL = redis.from_url(os.environ.get("REDIS_URL"))
#CELERY_RESULT_BACKEND = 'redis://localhost:6379'
#CELERY_RESULT_BACKEND = 'os.environ['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

之后用这个命令创建dyno heroku运行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:连接错误:[Errno 111]连接被拒绝 . 在8.0秒内再次尝试... [2016-08-03 08:23:26,843:ERROR / MainProcess]消费者:无法连接到amqp:// guest:** @ 127.0.0.1:5672 //:[Errno 111]拒绝连接 . 再试一次8.00秒......

请给我建议我们如何在heroku服务器上部署芹菜

1 回答

  • 1

    我有这个确切的问题 . 我使用以下行更新了我的procfile,错误消失了:

    worker: celery -A TASKFILE worker -B --loglevel=info
    

    将TASKFILE替换为例如: proj.celeryproj.tasks . 这取决于您放置任务的位置 .

相关问题