我正在尝试在我的 Flask 应用程序中使用线程,例如:
@app.route('/index')
def index():
t = threading.Thread(do_sth_else())
t.start()
print('ready to response')
return render_template('index.html')
def do_sth_else():
time.sleep(5)
print('sth else done')
在浏览器中调用127.0.0.1:5000/index
时,服务器控制台的结果不是我所期望的:
sth else done
ready to response
我希望 do_sth_else()
函数在其他线程中运行,而 index()
函数继续立即返回响应,这意味着我应该看到以上结果顺序不同。
所以我想知道:
- 为什么
index()
函数一直等到 do_sth_else()
完成
- 如何让应用按我的意愿运行
谢谢!
t = threading.Thread(do_sth_else())
调用 do_sth_else()
并将其结果传递给 Thread
。您应该像 t = threading.Thread(do_sth_else)
那样使用它。
我是一名优秀的程序员,十分优秀!