小编Jor*_*lks的帖子

在这个实验中,Flask 如何处理并发请求?

我正在尝试了解 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?

python flask

6
推荐指数
1
解决办法
2285
查看次数

标签 统计

flask ×1

python ×1