Python Flask在响应之前等待完成线程



我有一个flask Web服务器,它有一个路由,在给出响应后需要继续计算。为了实现这一点,我创建了一个路由,该路由在调用线程时启动线程,并在线程运行长复杂方法时立即给出响应,以确认请求已收到。这个想法是,响应不需要等待完成我在线程上编程的计算算法,但它并没有像我预期的那样工作:

@app.route('/runThreadTest', methods = ['POST'])
def return_status():

Thread(target = runThread()).start()
print("lets see when this sentence is printed")
return ("Response")    
def runThread():
print("started thread")
time.sleep(10)
return print("finished thread")

预期输出为:

started thread
Lets see when this sentence is printed
127.0.0.1 - - [11/Aug/2022 12:49:08] "POST /runThreadTest HTTP/1.1" 200 -
finished thread

但获得的输出是:

started thread
finished thread
lets see when this sentence is printed
127.0.0.1 - - [11/Aug/2022 12:49:08] "POST /runThreadTest HTTP/1.1" 200 -

这对我来说毫无意义。为什么它要等到线程结束后再给我一个响应?

这一行的问题是战术性的:

Thread(target = runThread()).start()

创建线程的正确方法是:

Thread(target = runThread).start()

最新更新