【问题标题】:Connection refused for Redis on HerokuHeroku 上的 Redis 连接被拒绝
【发布时间】: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

【问题讨论】:

    标签: django heroku redis celery


    【解决方案1】:

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

    尝试检查:

    1. heroku 配置,只是为了检查配置中是否设置了 REDISTOGO_URL
    2. 去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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-24
      • 1970-01-01
      • 2017-07-10
      • 2016-02-14
      • 2021-04-24
      • 2019-01-22
      • 2021-10-22
      • 2022-10-20
      相关资源
      最近更新 更多