sql >> Base de Datos >  >> NoSQL >> Redis

Frasco:pasar el trabajo del trabajador en segundo plano (rq, redis)

No he usado rq antes pero veo que un trabajo tiene un .key propiedad. Podría ser más fácil almacenar ese hash en su sesión. Entonces puedes usar el Job .fetch de la clase método que llamará a un .refresh() y devolverte el trabajo. Leyendo el .result() en ese punto le daría el estado actual del trabajo.

Tal vez así (no probado):

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