1

我正在尝试在 Heroku 上设置 Redis 作为 Celery 的后端。我让它在本地工作,但在 Heroku 上,我收到此错误(在 celery 任务完成后):ConnectionError:连接 localhost:6379 的错误 111。拒绝连接。

从我从其他答案中可以看出,这表明 redis 服务器不在线,尽管 REDISTOGO_URL 似乎配置正确。

在 settings.py 中:

REDIS_URL = os.getenv('REDISTOGO_URL', 'redis://localhost:6379/0')

在tasks.py中:

from celery import Celery
celery = Celery('tasks', backend=settings.CELERY_RESULT_BACKEND, broker=settings.REDIS_URL)

版本:

celery==3.0.5
celery-with-redis==3.0
django-celery==3.0.4
kombu==2.3.2
redis==2.6.0
4

2 回答 2

2

看起来您没有使用REDISTOGO_URL,因为错误消息指出localhost

尝试检查:

  1. heroku 配置,只是为了检查 REDISTOGO_URL 是否在配置中设置
  2. 转到heroku上的shell(像这样),看看python是否正确获取url

你是否在同一个应用程序上运行 celery,如果不检查其他服务器的配置。

于 2012-08-05T02:20:45.030 回答
1

发现了问题。我将 celery 后端配置为字符串“redis”而不是 REDIS_URL。

我有什么:

CELERY_RESULT_BACKEND = 'redis'

它应该是什么:

CELERY_RESULT_BACKEND = REDIS_URL

德米特里 - 感谢您的帮助。

于 2012-08-05T20:22:22.987 回答