如何使用Flask使用RedisCloud在Heroku上设置RQ worker

时间:2015-02-25 00:30:10

标签: python heroku flask redis python-rq

我试图在heroku上为我的烧瓶应用创建一个python rq worker。 heroku文档提供了以下用于创建worker的示例代码:

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 documentation仅列出使用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()

我已经确认REDISCLOUD_URL var存在于heroku上:

$heroku config:get REDISCLOUD_URL

格式:

http://rediscloud:password@hostname:port

我找不到有关redis.from_url()函数的作用或接受的参数的文档。

我在这里错过了让这个工作者查看服务器var for heroku而不是localhost?

0 个答案:

没有答案