我正在尝试了解 Flask 的工作原理。特别是,我试图了解单个 Flask 应用程序如何处理并发请求。看起来就像根据Can I service multiple client using just Flask app.run() asstandalone? 以及单个 Flask 进程会收到多少个并发请求?单个 Flask 应用程序一次只能处理一个请求。然而,我进行的一个快速实验似乎与这种思维模型并不相符。
这是一个具有执行阻塞调用的单个端点的 Flask 应用程序:
@app.route('/pause')
def pause():
time.sleep(5)
return jsonify()
app.run()
Run Code Online (Sandbox Code Playgroud)
在我的实验中,我打开了 2 个终端并并行使用curl 到达端点。我预计第一个请求将在 5 秒内完成,然后第二个请求将开始,然后再过 5 秒后完成(因此两个请求的总时间为 10 秒)。然而,实际发生的情况是第二个请求在第一个请求之后立即完成。这不是意味着两个请求并行运行吗?如果是这样,Flask 是否在单独的线程或进程中运行它们,因为 Python 有 GIL?
| 归档时间: |
|
| 查看次数: |
2285 次 |
| 最近记录: |