【问题标题】:Gunicorn is not respecting timeout when using UvicornWorker使用 UvicornWorker 时 Gunicorn 不遵守超时
【发布时间】:2020-07-18 13:21:06
【问题描述】:

我正在设置超时检查,所以我做了和端点:

@app.get("/tc", status_code=200)
def timeout_check():
    time.sleep(500)
    return "NOT OK"

我正在使用 docker 镜像 tiangolo/uvicorn-gunicorn-fastapi:python3.7 以及我运行服务器的命令:

CMD ["gunicorn","--log-level","debug","--keep-alive","15", "--reload", "-b", "0.0.0.0:8080", "--timeout", "15", "--worker-class=uvicorn.workers.UvicornH11Worker", "--workers=10", "myapp.main:app"]

我预计端点会在 15 秒后失败,但事实并非如此。似乎超时不受尊重。有什么解决办法吗?

【问题讨论】:

    标签: python gunicorn fastapi uvicorn


    【解决方案1】:

    异步工作者的行为与同步工作者不同:

    • 在同步工作人员中,工作人员将被阻止完成请求,因此如果请求时间超过超时时间,工作人员将被杀死,请求也将被杀死。
    • 在异步工作器中,工作器不会被阻塞,并且即使请求需要很长时间也会保持响应以完成其他请求。 ie worker timeout 和 request timeout 在这种情况下是不同的。

    uvicorn目前没有请求超时参数。

    更多详情:https://github.com/benoitc/gunicorn/issues/1493

    【讨论】:

      猜你喜欢
      • 2015-02-04
      • 2020-04-04
      • 1970-01-01
      • 2015-09-14
      • 1970-01-01
      • 2020-05-02
      • 2018-03-30
      • 1970-01-01
      • 2013-03-24
      相关资源
      最近更新 更多