Flask启动新线程 - RuntimeError:在请求上下文之外工作

时间:2018-05-30 09:18:13

标签: python multithreading flask

我正在使用flask来运行已经与持有用户ID和其他信息的会话相关的长进程。我尝试使用以下两种方法的新线程,但仍然出现错误'RuntimeError:在请求上下文之外工作。'

方法1

import threading
Thread(target=lambda: fn(**args)).start()

方法2

import thread
thread.start_new_thread(fn, (), args)

1 个答案:

答案 0 :(得分:1)

要在线程内部使用会话,您必须使用copy_current_request_context从桥接器启动该线程

from flask import copy_current_request_context
@copy_current_request_context
def ctx_bridge():
    fn(**args)
Thread(target=ctx_bridge).start()