0

フラスコアプリ用にherokuでpython rqワーカーを作成しようとしています。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 を使用していますが、 REDISTOGO_URL を REDISCLOUD_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()

REDISCLOUD_URL 変数が heroku に存在することを確認しました:

$heroku config:get REDISCLOUD_URL

形式:

http://rediscloud:password@hostname:port

redis.from_url() 関数が何をするのか、またはそれが受け入れるパラメータについてのドキュメントは見つかりません。

このワーカーが localhost ではなく heroku のサーバー var を参照するようにするには、ここで何が欠けていますか?

4

0 に答える 0