我正在尝试在 heroku 上为我的烧瓶应用程序创建一个 python rq worker。heroku 文档提供了以下用于创建工作者的示例代码:
https://devcenter.heroku.com/articles/python-rq#create-a-worker
import os
import redis
from rq import Worker, Queue, Connection
listen = ['high', 'default', 'low']
redis_url = os.getenv('REDISTOGO_URL', 'redis://localhost:6379')
conn = redis.from_url(redis_url)
if __name__ == '__main__':
with Connection(conn):
worker = Worker(map(Queue, listen))
worker.work()
事情是:我正在使用 RedisCloud 并用 REDISCLOUD_URL 替换 REDISTOGO_URL 不起作用。在本地加载很好,但是当我上传到 heroku 时,我在日志中看到它仍在尝试连接到 localhost。
2015-02-25T00:11:53.445167+00:00 app[web.1]: ConnectionError: Error 111 connecting to localhost:6379. Connection refused.
RedisCloud文档只列出了使用 Python,而不是特别是烧瓶,所以下面的代码根本没有改变我的情况:
# -*- coding: utf-8 -*-
import os
import urlparse
import redis
from rq import Worker, Queue, Connection
listen = ['high', 'default', 'low']
redis_url = urlparse.urlparse(os.environ.get('REDISCLOUD_URL', 'redis://localhost:6379'))
conn = redis.from_url(redis_url.hostname)
if __name__ == '__main__':
with Connection(conn):
worker = Worker(map(Queue, listen))
worker.work()
我已通过以下方式确认 Heroku 上存在 REDISCLOUD_URL var:
$heroku config:get REDISCLOUD_URL
格式:
http://rediscloud:password@hostname:port
我找不到关于 redis.from_url() 函数做什么或它接受什么参数的文档。
我在这里缺少什么让这个工作人员查看服务器 var 的 heroku 而不是 localhost?