2013-03-03 9 views
6

तो, मूल रूप से मैं एक लंबी-मतदान अनुप्रयोग बनाना चाहता हूं जो उसकेोकू पर आरक्यू का उपयोग कर रहा है। मैंने इस प्रश्न को Flask: passing around background worker job (rq, redis) पर देखा है लेकिन इससे मदद नहीं मिलती है।आरक्यू पायथन में आईडी द्वारा नौकरी कैसे प्राप्त करें?

यह मूल रूप से मैं कर रहा हूं।

@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) 

कुछ भी नहीं फैंसी है, इसलिए जब पोस्ट अनुरोध आता है, यह काम कतार और वापस तुरंत job_id लौट उपयोगकर्ता के लिए, और फिर उपयोगकर्ता मतदान परिणाम रखने के लिए कुंजी का उपयोग करेगा। हालांकि, मैं इस इस लाइन के रूप में काम करने के लिए Job().fetch(job_id) रिटर्न

NoRedisConnectionException: Could not resolve a Redis connection.

किसी भी मदद वास्तव में सराहना की जाएगी प्राप्त नहीं कर पा रहे।

+0

क्या आपने रेडिस एडन इंस्टॉल किया था और इसे ठीक से सेट अप किया था? – CraigKerstiens

+0

मैंने इसे अपने लोकहोस्ट पर परीक्षण किया। यह काम ठीक होने पर ठीक काम करता है। लेकिन जब मैं इसे जॉब() प्राप्त करने का प्रयास करता हूं। Fetch (job_id) यह मेरी त्रुटि देता है। – toy

उत्तर

11

मुझे किसी को भी दिलचस्पी होने पर पहले ही यह पता चला है। इसके बजाय यह होना चाहिए।

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

अब एपीआई में जॉब उपलब्ध नहीं है :(क्या आप कोई विकल्प जानते हैं? –

+2

आह, 'q.fetch_job (job_id)' मिला। –

0

यह एक प्रतिगमन जो अब तय हो गई है की वजह से था, जानकारी के लिए https://github.com/nvie/rq/issues/479 देखते हैं।

इसे पीआईपीआई को जारी किए जाने तक इसे हल करने के लिए आपको जिथब मास्टर शाखा से स्थापित करने की आवश्यकता है।

संबंधित मुद्दे