在包括Stack Overflow在内的许多站点上,人们都说Flask的内置服务器(以app.run()
开头)仅按顺序处理请求。许多人说,如果处理程序需要几秒钟的时间进行响应,则服务器将无法同时处理其他请求。为什么我在Flask 1.0.3中看到了完全相反的行为?
@app.route('/slow')
def slow():
time.sleep(5)
return 'slow'
@app.route('/hello')
def hello():
return 'hello'
app.run()
slow
处理程序处于休眠状态时,我可以成功触发请求并收到hello
的响应。这是为什么?开发服务器可以一次处理多个请求吗?我是这样,Flask的哪一部分可以做到这一点?
答案 0 :(得分:0)
您可能应该尝试使用阻止锁,例如:
release = datetime.now() + timedelta(seconds=5)
while datetime.now() < release:
continue
return 'slow'
sleep
可以是非阻塞的,这只会使其繁忙,就像繁重的计算一样。