Redis
 sql >> Base de données >  >> NoSQL >> Redis

Flask :faire circuler le travail de travailleur en arrière-plan (rq, redis)

Je n'ai pas utilisé rq avant mais je vois qu'un travail a un .key biens. Il pourrait être plus facile de stocker ce hachage dans votre session. Ensuite, vous pouvez utiliser le Job .fetch de la classe méthode qui appellera elle-même un .refresh() et vous rendre le travail. Lecture du .result() à ce stade, vous donnerait le statut actuel du travail.

Peut-être comme ça (non testé) :

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