首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在heroku服务器中配置django-celery

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

Stack Overflow用户
提问于 2016-08-02 13:24:25
回答 1查看 5.3K关注 0票数 5

在我的本地环境中,我使用芹菜来调度任务,它在本地系统中工作,我现在使用redis作为工作人员,我想在heroku服务器中配置django芹菜,我尝试在heroku应用程序中使用heroku-redis插件

在我的settings.py中添加了以下内容:

代码语言:javascript
复制
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中,我添加了:

代码语言:javascript
复制
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

但仍未运行任务

之后,我对log运行命令,这样它就会返回:

代码语言:javascript
复制
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:

代码语言:javascript
复制
heroku run bash -a bizbii2

并运行以下命令:

代码语言:javascript
复制
python manage.py celeryd -v 2 -B -s celery -E -l INFO

因此它返回如下错误:

代码语言:javascript
复制
[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服务器上部署芹菜

EN

回答 1

Stack Overflow用户

发布于 2016-08-14 02:51:35

我就遇到了这个问题。我用下面的代码行更新了我的procfile,错误消失了:

代码语言:javascript
复制
worker: celery -A TASKFILE worker -B --loglevel=info

将TASKFILE替换为例如:proj.celeryproj.tasks。这取决于您将任务放在哪里。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38712307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档