FastAPI 工作线程超时

Geo*_*dis 6 python-3.x gunicorn fastapi uvicorn

一些背景:

我不确定是否需要以下详细信息来回答我的问题,但提供它们仅供参考。我正在开发一个 FastAPI POST 端点,它执行以下操作:

  • 接收图像文件(multipart/form-data)
  • 将文件流转换为 numpy 数组。
  • 使用开放 CV 和 tensorflow 处理图像

该 API 使用 gunicorn 和 uvicorn 部署在 Google App Engine Flex(1-4 个内核,1-4 个工作线程)上。当我调用端点时,平均响应时间约为 1 秒。但是,当我使用 5 个并发用户对 API 进行负载测试时,每个请求的平均响应时间达到约 4-5 秒,然后一些 uvicorn 工作人员开始超时并被杀死。结果我收到了来自 nginx 服务器的 502 个响应。

我的问题如下:

由于 uvicorn 的默认超时时间为 30 秒,我不明白为什么工作人员在需要约 30 秒的响应时间之前被终止。我已经读到 30 秒超时不是每个请求。但是我不明白在什么情况下工人应该超时。例如,如果所有工作人员都设法在 5-10 秒内做出响应,那么在超时阈值为 30 时看到工作人员超时是否正常?