You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FastAPI同步模式下为何能同时处理多个请求?

为什么同步FastAPI接口的第二个请求会先启动?

你的root函数是同步函数(未用async定义),FastAPI搭配Uvicorn时,会把这类同步路由函数放到线程池中执行,而不是让它们阻塞事件循环的主线程。

具体过程是这样的:

  • 第一个请求进来,Uvicorn从线程池分配一个线程执行root,这个线程执行到time.sleep(30)时进入阻塞状态,但线程池还有其他空闲线程;
  • 第二个请求短时间内到达,Uvicorn直接分配另一个空闲线程处理它,所以第二个请求的Started at日志会先打印出来,此时第一个线程还在sleep;
  • 等第一个线程的30秒sleep结束,才会打印它的Executed at并返回响应;
  • 之后第二个线程的sleep结束,打印自己的Executed at并返回响应。

对应你给出的日志时间线:

  • 第一个请求23:40:53启动,sleep30秒后在23:41:23执行完成,和日志完全匹配;
  • 第二个请求23:41:16启动,sleep30秒后在23:41:47执行完成,也符合时间逻辑。

内容的提问来源于stack exchange,提问作者StuffHappens

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 19:32:41