Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Frasco:passando o trabalho do trabalhador em segundo plano (rq, redis)


Eu não usei rq antes, mas vejo que um trabalho tem um .key propriedade. Pode ser mais fácil armazenar esse hash em sua sessão. Então você pode usar o Job .fetch da classe método que irá chamar um .refresh() e devolver o trabalho para você. Lendo o .result() nesse ponto lhe daria o status atual do trabalho.

Talvez assim (não testado):
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