2013-03-03 15 views
6

基本的に私はherokuでRQを使っている長いポーリングアプリケーションを作りたいと思っています。私はこの質問Flask: passing around background worker job (rq, redis)を見てきましたが、それは助けにはなりません。RQ pythonでidを使ってジョブを取得するには?

これは基本的に私がやっていることです。

@app.route('/do_something', methods=['POST']) 
def get_keywords(): 
    data_json = json.loads(request.data) 
    text = urllib.unquote(data_json["sentence"]) 

    job = q.enqueue(keyword_extraction.extract, text) 
    return job.key 

@app.route('/do_something/<job_id>', methods=['GET']) 
def get_keywords_results(job_id): 
    job = Job().fetch(job_id) 

    if(not job.is_finished): 
     return "Not yet", 202 
    else: 
     return str(job.result) 

何も空想ではありませんので、POSTリクエストが来るとき、それは仕事をキューに入れ、immidiatelyユーザーに戻ってJOB_ID戻り、その後、ユーザーは、ポーリングに結果を維持するためにキーを使用しますします。しかし、私はこれが、このラインとしてJob().fetch(job_id)戻り

NoRedisConnectionException: Could not resolve a Redis connection.

を動作させるように見えることはできませんすべてのヘルプは本当にいただければ幸いです。

+0

赤ちゃんをインストールして正しく設定しましたか? – CraigKerstiens

+0

私は自分のlocalhostでそれをテストしました。ジョブがエンキューされるとうまく動作します。しかし、私はそれを取得しようとするとジョブ()。フェッチ(job_id)それは私のエラーを提供します。 – toy

答えて

11

誰かが興味がある場合に備えて、私はこれをすでに見つけました。代わりに、この1つでなければなりません。

Job.fetch(job_id, connection=conn) 
+0

ジョブは現在APIで利用できません:(何か別のことを知っていますか? –

+2

ああ、 'q.fetch_job(job_id)'を見つけました。 –

0

これは、現在修正されているためでした。詳細はhttps://github.com/nvie/rq/issues/479を参照してください。

これを解決するには、github masterブランチからPyPIにリリースされるまでインストールする必要があります。

関連する問題