我可以在本地运行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 to go是我的应用程序的已安装插件.
REDISTOGO_URL是否必须在settings.py中定义?为什么heroku在worker.py中甚至没有定义时尝试连接到本地主机?
可能与您的问题没有直接关系,但我遇到了同样的错误,结果发现在我的系统上没有安装redis-server软件包.
问题解决了 sudo apt-get install redis-server
解决方案是sudo apt-get install redis-server
.不要忘记启动服务sudo service redis-server start
,您可以使用该命令sudo service redis-server {start|stop|restart|force-reload|status}
进行参考