time.sleep、Flask 和 I/O 等待
time.sleep, Flask and I/O wait
使用time.sleep()
时,Flask请求会被阻塞吗?
我的一个 Flask 端点启动了一个长处理子任务,在某些情况下,可以等待任务完成而不是异步执行工作,并且 return 结果相同请求。
在这种情况下,我的 Flask 应用会启动进程,然后等待它完成,然后再 return 获取结果。我的问题是,在调用类似(简化)的东西时:
while True:
if process_is_done():
break
time.sleep(1)
Flask 会阻止该请求直到它完成,还是允许其他请求在此期间进入?
是的,该请求已被完全阻止。 time.sleep()
不会通知任何有关睡眠的信息,它只是 'idles' CPU 持续时间。
Flask 本身不是异步的,它没有暂停请求处理程序并给其他请求更多时间的概念。一个好的 WSGI 服务器将使用线程和/或多个工作进程来实现并发,但是这个请求被阻塞并且占用 CPU 时间都是一样的。
使用time.sleep()
时,Flask请求会被阻塞吗?
我的一个 Flask 端点启动了一个长处理子任务,在某些情况下,可以等待任务完成而不是异步执行工作,并且 return 结果相同请求。
在这种情况下,我的 Flask 应用会启动进程,然后等待它完成,然后再 return 获取结果。我的问题是,在调用类似(简化)的东西时:
while True:
if process_is_done():
break
time.sleep(1)
Flask 会阻止该请求直到它完成,还是允许其他请求在此期间进入?
是的,该请求已被完全阻止。 time.sleep()
不会通知任何有关睡眠的信息,它只是 'idles' CPU 持续时间。
Flask 本身不是异步的,它没有暂停请求处理程序并给其他请求更多时间的概念。一个好的 WSGI 服务器将使用线程和/或多个工作进程来实现并发,但是这个请求被阻塞并且占用 CPU 时间都是一样的。