Flask的内置服务器没有阻塞?

时间:2019-07-05 02:36:55

标签: python flask wsgi

在包括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的哪一部分可以做到这一点?

1 个答案:

答案 0 :(得分:0)

您可能应该尝试使用阻止锁,例如:

release = datetime.now() + timedelta(seconds=5)
while datetime.now() < release:
  continue
return 'slow'

sleep可以是非阻塞的,这只会使其繁忙,就像繁重的计算一样。