2013-03-03 11 views
6

Quindi, in pratica, voglio creare un'applicazione a polling lungo che utilizza RQ su heroku. Ho dato un'occhiata a questa domanda Flask: passing around background worker job (rq, redis) ma non aiuta.Come ottenere Job con id in RQ python?

Questo è fondamentalmente quello che sto facendo.

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

Niente è di fantasia, in modo che quando la richiesta POST viene, in coda il lavoro e tornare indietro job_id all'utente diementicato, e quindi utente utilizzerà la chiave per mantenere il polling il risultato. Tuttavia, non riesco a farlo funzionare come questa linea Job().fetch(job_id) rendimenti

NoRedisConnectionException: Could not resolve a Redis connection.

Qualsiasi aiuto sarebbe molto apprezzato.

+0

È stato installato un redis adon e configurato correttamente? – CraigKerstiens

+0

L'ho provato sul mio localhost. Funziona bene quando il lavoro è in coda. Ma quando provo a farlo Job(). Fetch (job_id) mi dà il mio errore. – toy

risposta

11

Ho già scoperto questo, nel caso in cui qualcuno è interessato. Deve essere questo invece.

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

Ora il lavoro non è disponibile nell'API :(Conosci un'alternativa? –

+2

Ah, trovato 'q.fetch_job (job_id)'. –

0

Ciò è dovuto ad una regressione che viene ora risolto, vedere https://github.com/nvie/rq/issues/479 per i dettagli.

È necessario installare dal ramo master github per risolvere questo problema, fino a quando questo non viene rilasciato a PyPI.

Problemi correlati