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

Flask/Gunicorn部署于Render时,后台线程引发健康检查失败与SIGTERM问题解决方案咨询

Flask/Gunicorn部署于Render时,后台线程引发健康检查失败与SIGTERM问题解决方案咨询

大家好,我最近碰到了一个部署相关的棘手问题,想请各位帮忙出出主意。

背景与架构说明

我搭建了一个Flask应用,用来处理用户上传的文档,接入了RAG(检索增强生成)流水线。核心需求是给用户快速返回响应,同时把繁重的处理任务异步放到后台执行。具体架构是这样的:

  • 用户通过Flask的/api/upload_document端点上传文件
  • 端点先保存文件,然后启动一个Python的threading.Thread后台线程,紧接着返回HTTP 202 Accepted响应
  • 后台线程负责读取文件、拆分文档块,然后针对每个块调用OpenAI的嵌入API和Pinecone的向量存储API

遇到的问题

我把应用部署在Render.com上,使用Gunicorn同步worker。现在的问题是:后台线程启动初期的资源占用突然飙升,导致Gunicorn主进程短暂失去响应。Render的自动健康检查器检测到无响应后,会认为服务器崩溃了,给Gunicorn主进程发送SIGTERM信号,直接让它shutdown。

这就造成了一个竞态条件:用户那边会收到连接错误(因为服务器正在关闭),但后台线程作为独立的OS线程,会躲过SIGTERM继续运行,最后还能成功处理完整个文档(日志里能看到处理完成的记录)。结果就是用户觉得请求失败了,但后端其实已经完成了任务,体验非常糟糕。

我试过在处理循环里加time.sleep(2)的延迟,能稍微缓解,但对于大文件还是解决不了问题。

我的问题

  1. 怎么才能避免后台线程启动时的资源峰值导致Gunicorn主进程在Render上通不过健康检查?
  2. 有没有更好的Flask架构方案,能让主Web服务器保持响应的同时,处理这类重型后台任务?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 10:00:28