错误111连接到localhost:6379拒绝连接Django Heroku

问题描述

原来我需要设置类似的东西才能在Heroku上工作。

redis_url = os.getenv('REdisTOGO_URL')

urlparse.uses_netloc.append('redis')
url = urlparse.urlparse(redis_url)
conn = Redis(host=url.hostname, port=url.port, db=0, password=url.password)

解决方法

我能够在本地运行redis,并且一切正常。

但是,当我部署到heroku时,出现此错误:

Error 111 connecting to localhost:6379. Connection refused.

我已经建立了一个Procfile与…

web: gunicorn odb.wsgi --log-file -
worker: python worker.py

我有一个worker.py文件…

import os
import urlparse
from redis import Redis
from rq import Worker,Queue,Connection

listen = ['high','default','low']

redis_url = os.getenv('REDISTOGO_URL')
if not redis_url:
    raise RuntimeError('Set up Redis To Go first.')

urlparse.uses_netloc.append('redis')
url = urlparse.urlparse(redis_url)
conn = Redis(host=url.hostname,port=url.port,db=0,password=url.password)

if __name__ == '__main__':
with Connection(conn):
    worker = Worker(map(Queue,listen))
    worker.work()

REDISTOGO_URL变量出现在heroku配置中。

Redis go是我的应用程序的已安装加载项。

是否必须在settings.py中定义REDISTOGO_URL?为什么在worker.py中甚至没有定义heroku时,heroku为何尝试连接到本地主机?