Python 3.x FastAPI工作线程超时

Python 3.x FastAPI工作线程超时,python-3.x,gunicorn,fastapi,uvicorn,Python 3.x,Gunicorn,Fastapi,Uvicorn,一些背景: 我不确定是否需要以下细节来回答我的问题,但提供这些细节仅供参考。我正在开发一个FastAPI POST端点,它执行以下操作: 接收图像文件(多部分/表单数据) 将文件流转换为numpy数组 使用open CV和tensorflow处理图像 该API使用gunicorn和uvicorn部署在Google App Engine Flex(1-4个内核,1-4个工人)上。当我调用端点时,平均响应时间约为1秒。但是,当我使用5个并发用户对API进行负载测试时,每个请求的平均响应时间约为4

一些背景:

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

  • 接收图像文件(多部分/表单数据)
  • 将文件流转换为numpy数组
  • 使用open 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时,工作人员超时是否正常?

您好,您找到原因了吗?我在我们的应用程序中也遇到了502个响应,这是由FastAPI/uvicorn上游引起的。可能是这个超时:谢谢你的响应。我认为这不是错误,因为我收到的是502,而不是503。另外,我还没有使用这个标志,但是这个参数可能有一个默认值。