FastAPI/Gunicorn 中的请求如何排队?

Raq*_*qib 7 python-3.x gunicorn fastapi uvicorn

我试图了解 FastAPI/Gunicorn 如何处理和排队请求。

客户端合约:客户端发出请求后,需要在 5 秒内收到响应。如果客户端在 5 秒内没有收到响应,则该请求不再有用,客户端将停止监听响应。

场景: 考虑以下场景:

  1. 假设我们有 4 个工作人员(使用 Gunicorn 作为 UvicornWorkers 的流程管理器;使用tiangolo 的 docker 镜像
  2. 客户端发送100个并发请求
  3. 每个请求需要 5 秒才能完成
  4. 我们在 5 秒内处理前 4 个请求
  5. 但到那时,队列中接受的剩余 96 个请求(我不确定是否发生排队或它是如何工作的,如果您能解释一下,我将不胜感激)已经在那里花费了 5 秒并违反了客户端合同。处理这 96 个请求是一种资源浪费,因为客户端不再侦听它们。

问题:

  1. 我将如何丢弃这 96 个请求,即如果每个请求在队列中等待超过 5 秒,则丢弃它们?