Flask 使用线程 运行 代码 after/alognside return
Flask using thread to run code after/alognside return
我正在尝试 运行 在 return 我的 flask 中的模板后进行编码
这里是示例代码
@app.route("/hello")
def Hello():
thread = threading.Thread(target=long_running_task)
thread.start()
return 'hello'
def long_running_task():
time.sleep(5)
return redirect("/goodbye")
这可能吗?为什么当此代码为 运行 时它不能按预期工作? /hello 应该加载,然后在 5 秒后它应该重定向,但它永远不会重定向,我相信线程永远不会 运行.
它确实有效,但是由于在您的 Hello
函数中您 return 'Hello' 在线程启动后,return redirect("/goodbye")
永远不会到达浏览器。但是后台处理是有效的,你可以在 long_running_task
代码中添加一些打印语句,你自己看看 flask 控制台:
@app.route("/hello")
def Hello():
thread = threading.Thread(target=long_running_task)
thread.start()
return 'hello'
def long_running_task():
print("long task started")
time.sleep(5)
print("long task ended")
return redirect("/goodbye")
我正在尝试 运行 在 return 我的 flask 中的模板后进行编码
这里是示例代码
@app.route("/hello")
def Hello():
thread = threading.Thread(target=long_running_task)
thread.start()
return 'hello'
def long_running_task():
time.sleep(5)
return redirect("/goodbye")
这可能吗?为什么当此代码为 运行 时它不能按预期工作? /hello 应该加载,然后在 5 秒后它应该重定向,但它永远不会重定向,我相信线程永远不会 运行.
它确实有效,但是由于在您的 Hello
函数中您 return 'Hello' 在线程启动后,return redirect("/goodbye")
永远不会到达浏览器。但是后台处理是有效的,你可以在 long_running_task
代码中添加一些打印语句,你自己看看 flask 控制台:
@app.route("/hello")
def Hello():
thread = threading.Thread(target=long_running_task)
thread.start()
return 'hello'
def long_running_task():
print("long task started")
time.sleep(5)
print("long task ended")
return redirect("/goodbye")