Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django Heroku上Redis的连接被拒绝_Django_Heroku_Redis_Celery - Fatal编程技术网

Django Heroku上Redis的连接被拒绝

Django Heroku上Redis的连接被拒绝,django,heroku,redis,celery,Django,Heroku,Redis,Celery,我正在尝试在Heroku上设置Redis作为芹菜的后端。我让它在本地工作,但在Heroku上,我(在芹菜任务完成后)出现以下错误:ConnectionError:error 111连接localhost:6379。连接被拒绝 从其他答案中我可以看出,这表明redis服务器不在线,尽管REDISTOGO_URL似乎配置正确 在settings.py中: REDIS_URL = os.getenv('REDISTOGO_URL', 'redis://localhost:6379/0') 在task

我正在尝试在Heroku上设置Redis作为芹菜的后端。我让它在本地工作,但在Heroku上,我(在芹菜任务完成后)出现以下错误:ConnectionError:error 111连接localhost:6379。连接被拒绝

从其他答案中我可以看出,这表明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

看起来您没有使用
REDISTOGO\u URL
,因为错误消息表明
localhost

尝试检查:

  • heroku配置,只是为了检查配置中是否设置了REDISTOGO\u URL
  • 转到heroku上的shell(like),看看python是否正确获取url

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

    发现问题。我将芹菜后端配置为字符串“redis”,而不是redis\uURL

    我所拥有的:

    CELERY_RESULT_BACKEND = 'redis'
    
    它应该是什么:

    CELERY_RESULT_BACKEND = REDIS_URL
    

    Dmitry-感谢您的帮助。

    这也是我的想法-我如何检查它在使用什么?REDISTOGO\u URL在配置中设置正确。Python也在引入它(如果我导入settings.REDIS_URL,它将匹配Heroku配置)。芹菜在同一个应用程序中。查看我的日志,芹菜似乎在其配置中报告了正确的代理(相同的REDISTOGO_URL)。从这里很难分辨。我会尝试根据他们的django文档设置芹菜,将broker放入settings.py,看看这是否有帮助。