我正在使用flask创建一个网站,这是我的情况:
我有一个非常大的脚本,我需要在服务器上运行,所以如果我只是用subprocess.Popen
调用脚本,服务器将超时。所以我想做的是创建一个线程,在线程中使用Popen
调用脚本,并在线程完成后显示结果。我想检查线程是否已完成is_alive
,但我不知道如何将其作为参数传递。到目前为止,这是我的代码:
(我正在简化示例,因此Popen
只有time.sleep
)
def funk():
time.sleep(10)
print ("Works")
@app.route('/')
def home():
thread = Thread(target = funk)
thread.start()
return redirect('end',thread = thread)
@app.route('/end')
def end(thread):
if thread.is_alive() == 0:
return "Still working"
else:
return "Ended"
但是我收到了一个错误:
TypeError:redirect()得到了一个意外的关键字参数' thread'
有人知道如何将该线程作为参数传递吗?
我有一个早期版本,其中我有一个全局常量,我在线程中修改并在end
询问它是否已更改,但这是有效的,但这是一个愚蠢的解决方案。