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

标签 django heroku redis celery django-celery

在我的本地环境中,我使用 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

之后使用此命令创建 dyno:

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

最佳答案

我确实遇到了这个问题。我用以下行更新了我的 procfile,错误消失了:

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

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

关于django - 如何在 heroku 服务器中配置 django-celery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38712307/

相关文章:

ruby-on-rails - "bundler: command not found: unicorn"在将 Heroku Bamboo 告知的 Procfile 添加到 Cedar 迁移指南之后

heroku - MongoDB Atlas 连接工作但不在 Heroku 中显示数据

makefile - 为 redis : cc: error: x86_64: No such file or directory 编译 hiredis 依赖项的奇怪失败

使用 call_user_func_array 插入时 redis 丢失 key

python - Delete() View 和模板代码

django - Django 表单字段的标签中的换行符

heroku - Ionic PWA 部署

java - Spring 中是否有任何插件或模块,如用于 Java 的 Django flatpages?

mysql - Django 不支持 MySQL 组复制

redis - 为什么用Play Redis插件会报错 "unresolved dependency: com.typesafe#play-plugins-redis_2.11;2.3.0"?