我可以在本地运行Redis,一切都很正常.

但是,当我部署到Heroku时,我收到以下错误:

Error 111 connecting to localhost:6379. Connection refused. 

我已经建立了一个档案.

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要try 连接到本地主机,而它甚至没有在worker.py中定义?

推荐答案

原来我需要设置这样的东西才能在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)

Django相关问答推荐

HTMX中的响应未作为附件处理(即文件未下载)

把Django测试和testcafe结合起来?

如何从Django';S模型中的方法中检索值?

Django:创建一个动态侧边栏模板并在其他模板中使用它

在 Django Rest Framework 视图中,request.user 是在请求​​到达视图之前进行数据库调用还是数据库调用发生?

基于每个条目的 Django Queryset 过滤

Django 在模型中存储用户图像

如何解决 AssertionError: .accepted_renderer not set on Response in django and ajax

django - 让用户登录到测试客户端

如何在 Django ORM 中执行 GROUP BY ... COUNT 或 SUM?

测试 Django ModelForm 是否有实例

在 Django 中使用 AuthenticationForm

Django 模板和变量属性

使用 sqlite 运行 django 测试

Django中的自定义排序

如何在 Django 中使用动态外键?

django select_related - 何时使用它

Django 测试 - 在所有测试中修补对象

过滤查询参数

Django 字符串到日期格式