Redis
 sql >> Database >  >> NoSQL >> Redis

Pallone:​​passaggio del lavoro di lavoratore in background (rq, redis)

Non ho usato rq prima ma vedo che un lavoro ha un .key proprietà. Potrebbe essere più facile archiviare quell'hash nella tua sessione. Quindi puoi utilizzare il Job .fetch della classe metodo che chiamerà esso stesso un .refresh() e restituirti il ​​lavoro. Leggere il .result() a quel punto ti darebbe lo stato attuale del lavoro.

Forse così (non testato):

from rq.job import Job

@app.route('/make/')
def make():
    job = q.enqueue(do_something, 'argument')
    session['job'] = job.key
    return 'Done'

@app.route('/get/')
def get():
    try:
        job = Job()
        job.fetch(session['job'])
        out = str(job.result)
    except:
        out = 'No result yet'
    return out