Flask: passando em torno do trabalho de trabalhador de fundo (rq, redis)

Eu quero fazer uma coisa muito simples: iniciar um trabalhador para algo e, em seguida, retornar a resposta ao usuário. Eu estou tentando fazer isso usando uma combinação de Flask e RQ.

import os
from flask import Flask, session
from somewhere import do_something
from rq import Queue
from worker import conn

app = Flask(__name__)
app.debug = True
app.secret_key = '....'

q = Queue(connection=conn)

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

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

A ideia neste exemplo muito simples é que as pessoas vão para / make / e o trabalho começa. Depois de algum tempo pode ir para / get / e o resultado do trabalhador será impresso lá.

No entanto, uma linha está causando problemas:

session['job'] = job

Parece que o trabalho não pode ser em conserva, o que aparentemente é usado pela sessão de Flaks. Estou recebendo o erro:

...
10:52:16 web.1     |   File "/Users/julius/twitter-sentiment/venv/lib/python2.7/site-packages/flask/app.py", line 804, in save_session
10:52:16 web.1     |     return self.session_interface.save_session(self, session, response)
10:52:16 web.1     |   File "/Users/julius/twitter-sentiment/venv/lib/python2.7/site-packages/flask/sessions.py", line 205, in save_session
10:52:16 web.1     |     secure=secure, domain=domain)
10:52:16 web.1     |   File "/Users/julius/twitter-sentiment/venv/lib/python2.7/site-packages/werkzeug/contrib/securecookie.py", line 329, in save_cookie
10:52:16 web.1     |     data = self.serialize(session_expires or expires)
10:52:16 web.1     |   File "/Users/julius/twitter-sentiment/venv/lib/python2.7/site-packages/werkzeug/contrib/securecookie.py", line 235, in serialize
10:52:16 web.1     |     self.quote(value)
10:52:16 web.1     |   File "/Users/julius/twitter-sentiment/venv/lib/python2.7/site-packages/werkzeug/contrib/securecookie.py", line 192, in quote
10:52:16 web.1     |     value = cls.serialization_method.dumps(value)
10:52:16 web.1     |   File "/Users/julius/twitter-sentiment/venv/bin/../lib/python2.7/copy_reg.py", line 70, in _reduce_ex
10:52:16 web.1     |     raise TypeError, "can't pickle %s objects" % base.__name__
10:52:16 web.1     | TypeError: can't pickle function objects

Eu realmente espero que algo possa ajudar. Eu poderia estar fazendo isso de uma maneira completamente errada (com a passagem do trabalho através de uma sessão), mas eu não tenho idéia de como mais acessar o resultado do trabalho ...

Qualquer ajuda será muito apreciada.

Desde já, obrigado.

questionAnswers(2)

yourAnswerToTheQuestion