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 连接被拒绝的主要内容,如果未能解决你的问题,请参考以下文章
bash: ./Main.js: Heroku 上的权限被拒绝