Python 烧瓶会话取消勾选错误

Python 烧瓶会话取消勾选错误,python,heroku,flask,redis,python-rq,Python,Heroku,Flask,Redis,Python Rq,我有一个长时间运行的函数,我想在heroku上作为后台函数运行。我正在使用redis和rq来管理它 将数据加载到会话对象的“我的仪表板视图”功能从以下内容开始: @login_required @main.route('/dash', methods=['GET', 'POST']) def dash(): if request.method =='POST': print(request.form.get('posting')) session['pos

我有一个长时间运行的函数,我想在heroku上作为后台函数运行。我正在使用redis和rq来管理它

将数据加载到会话对象的“我的仪表板视图”功能从以下内容开始:

@login_required
@main.route('/dash', methods=['GET', 'POST'])
def dash():
    if request.method =='POST':
        print(request.form.get('posting'))
        session['posting']=request.form.get('posting')
        session['folder']=request.form.get('folder')
def confirm_function():
    p =  session['posting']
    folder  =  session['folder']
选择后,信息将传递给:

@login_required
@main.route('/confirm', methods=['GET', 'POST'])
def confirm():
    print(session['posting'])
    return foreground_vs_background(confirm_function,[session])
然后:

最后,我传入的函数开始于:

@login_required
@main.route('/dash', methods=['GET', 'POST'])
def dash():
    if request.method =='POST':
        print(request.form.get('posting'))
        session['posting']=request.form.get('posting')
        session['folder']=request.form.get('folder')
def confirm_function():
    p =  session['posting']
    folder  =  session['folder']
heroku日志显示:

2018-03-09T14:43:14.357633+00:00 app[worker.1]:     return self.run(*args, **kwargs)
2018-03-09T14:43:14.357642+00:00 app[worker.1]:   File "manage.py", line 111, in run_worker
2018-03-09T14:43:14.357861+00:00 app[worker.1]:     worker.work()
2018-03-09T14:43:14.357870+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/rq/worker.py", line 460, in work
2018-03-09T14:43:14.360547+00:00 app[worker.1]:     self.execute_job(job, queue)
2018-03-09T14:43:14.360590+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/rq/worker.py", line 575, in execute_job
2018-03-09T14:43:14.360593+00:00 app[worker.1]:     self.fork_work_horse(job, queue)
2018-03-09T14:43:14.360594+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/rq/worker.py", line 521, in fork_work_horse
2018-03-09T14:43:14.360596+00:00 app[worker.1]:     self.main_work_horse(job, queue)
2018-03-09T14:43:14.360598+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/rq/worker.py", line 590, in main_work_horse
2018-03-09T14:43:14.360599+00:00 app[worker.1]:     success = self.perform_job(job, queue)
2018-03-09T14:43:14.360601+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/rq/worker.py", line 692, in perform_job
2018-03-09T14:43:14.360603+00:00 app[worker.1]:     self.prepare_job_execution(job)
2018-03-09T14:43:14.360604+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/rq/worker.py", line 624, in prepare_job_execution
2018-03-09T14:43:14.360610+00:00 app[worker.1]:     self.procline(msg.format(job.func_name, job.origin, time.time()))
2018-03-09T14:43:14.360612+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/rq/job.py", line 241, in func_name
2018-03-09T14:43:14.360842+00:00 app[worker.1]:     self._unpickle_data()
2018-03-09T14:43:14.360848+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/rq/job.py", line 209, in _unpickle_data
2018-03-09T14:43:14.361116+00:00 app[worker.1]:     self._func_name, self._instance, self._args, self._kwargs = unpickle(self.data)
2018-03-09T14:43:14.361121+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/rq/job.py", line 53, in unpickle
2018-03-09T14:43:14.361329+00:00 app[worker.1]:     raise UnpickleError('Could not unpickle', pickled_string, e)
2018-03-09T14:43:14.361396+00:00 app[worker.1]: rq.exceptions.UnpickleError: ('Could not unpickle', RecursionError('maximum recursion depth exceeded while calling a Python object',)
)
2018-03-09T14:43:14.522562+00:00 app[worker.1]: 14:43:14 Moving job to 'failed' queue

我一直在通读,这听起来像是一个类似的问题,但我不清楚如何解决这个问题,以允许我访问会话对象中存储的数据。经过一段时间的努力,我得出结论,可能无法将对象传递到RQ。最后,我将参数转换为json字符串并以这种方式传递它们

args= json.dumps({"posting": session['posting'], "folder": session['folder']})
然后您可以运行:

 foreground_vs_background(myfunction, args):

该死。2019年,还是没办法?