python - time.sleep、Flask 和 I/O 等待
问题描述
使用时time.sleep()
,Flask 请求会被阻塞吗?
我的 Flask 端点之一启动了一个长处理子任务,在某些情况下,可以等待任务完成并在同一个请求中返回结果,而不是异步执行工作。
在这种情况下,我的 Flask 应用程序会启动该过程,然后在返回结果之前等待它完成。我的问题是,在调用类似(简化)的时候:
while True:
if process_is_done():
break
time.sleep(1)
Flask 会阻止该请求直到它完成,还是允许其他请求同时出现?
解决方案
是的,该请求被完全阻止。time.sleep()
不会通知任何有关睡眠的信息,它只是在此期间“空闲”CPU。
Flask 本身不是异步的,它没有将请求处理程序暂停并给其他请求更多时间的概念。一个好的 WSGI 服务器会使用线程和/或多个工作进程来实现并发,但是这个请求会被阻塞并占用 CPU 时间。
推荐阅读
- sql - 从 databricks 表的字符串列中收集用户信息(电子邮件、IP 地址等)
- regex - 如何在 WhitelistingTextInputFormatter 的正则表达式中允许单引号?
- python - 当我将标签位置添加到 python pptx 甜甜圈图时,文件出错
- android - 在 Android 中通过 Instagram 登录
- node.js - 同时 JS 应用程序管道安装和构建挂起(Express js 用于服务器,Create-React-App 用于客户端)
- python - no-build-isolation 有什么作用?
- c++ - 无法在 MacOs 下用 C++ 打开文件
- javascript - 如何在 React 中过滤多个值
- html - 使用选定的 Wordpress 更改单选按钮的颜色
- sql - 如何在一个查询中插入和更新