Heroku 上的 Redis 连接被拒绝

Posted

技术标签:

【中文标题】Heroku 上的 Redis 连接被拒绝【英文标题】:Connection refused for Redis on Heroku 【发布时间】:2012-08-02 13:11:45 【问题描述】:

我正在尝试在 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

【问题讨论】:

【参考方案1】:

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

尝试检查:

    heroku 配置,只是为了检查配置中是否设置了 REDISTOGO_URL 去heroku上的shell(比如this)看看python是否正确获取url

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

【讨论】:

这也是我的想法 - 我怎样才能检查它正在使用什么? REDISTOGO_URL 在配置中设置正确。 Python 也将其引入(如果我导入 settings.REDIS_URL,它与 Heroku 配置匹配)。 Celery 在同一个应用程序中。 查看我的日志,看起来 Celery 在其配置中报告了正确的代理(相同的 REDISTOGO_URL)。 从这里很难说。我会尝试根据他们的 django 文档设置 Celery,将代理放入 settings.py 看看是否有帮助。【参考方案2】:

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

我有什么:

CELERY_RESULT_BACKEND = 'redis'

应该是什么:

CELERY_RESULT_BACKEND = REDIS_URL

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

【讨论】:

以上是关于Heroku 上的 Redis 连接被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

Heroku + Celery - 拒绝连接

bash: ./Main.js: Heroku 上的权限被拒绝

带有 Java ECONNREFUSED 的 Heroku Websockets(连接被拒绝)

Heroku Rails 4 无法连接到服务器:连接被拒绝

Heroku部署,带有MongoDB错误:连接被拒绝

dial tcp <REMOTE-IP>:6379: connect: 连接被拒绝