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

部署在GCP Cloud Run的FastAPI未终止超时请求问题排查

Cloud Run超时后FastAPI请求未终止的原因分析
  • 连接关闭信号未被Web服务器捕获:Cloud Run触发15秒超时后,会主动断开与客户端的HTTP连接,但这个连接关闭的信号(如TCP FIN/RST包)可能没被FastAPI依赖的Uvicorn等Web服务器及时检测到。Uvicorn默认配置不会主动轮询连接状态,导致处理请求的线程/协程继续执行下游调用,直到流程自然结束。

  • 同步请求的线程池特性:如果你的FastAPI接口用的是同步函数(未使用async def),请求会在Uvicorn的线程池中处理。Cloud Run断开连接后,Uvicorn不会强制终止线程池中的运行任务——因为强制终止线程可能引发资源泄漏或数据不一致,所以会等待任务自行完成。

  • 下游超时配置未正确生效:你给下游API设置的超时可能存在执行漏洞。比如用requests库时,仅设置timeout参数但未捕获超时异常并终止流程;或是异步调用(如httpx.AsyncClient)时,未正确处理TimeoutException,导致请求仍会继续执行直至下游返回结果。

  • 异步任务与主请求生命周期解绑:如果FastAPI接口中使用了BackgroundTasks或其他异步后台任务,主请求的连接被Cloud Run关闭后,后台任务不会随之终止,仍会在容器内继续执行到完成。

  • 进程未响应终止信号:Cloud Run在断开连接后,会向容器发送SIGTERM信号要求进程退出,但如果FastAPI所在的进程没有监听并处理该信号,或是处理逻辑未终止正在进行的请求,那么当前请求会继续执行直至结束。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 23:22:05