【问题标题】:python fastAPI Server. How to extend connection timeoutpython fastAPI 服务器。如何延长连接超时
【发布时间】:2022-01-12 20:00:57
【问题描述】:

我正在使用 fastAPI python 框架来构建一个简单的 POST/GET https 服务器。 在客户端,我每 10 秒发送一次心跳 POST 消息,我希望在此期间保持连接打开。

但是,由于某种原因,我看到每个新的心跳,我的连接都会被对等方断开,所以我需要重新建立它。如果 2 次连续 keepalive 之间的空闲时间为 1 秒,则 Connection 保持活动状态,并且可以重复使用。

我将HTTP/1.1Connection: keep-alive 一起使用,但这完全取决于服务器将连接保持多长时间,并且我正在寻找一种方法将此超时延长至约15 秒。有什么合适的方法吗?甚至只是让服务器在决定断开客户端对等点时打印正确的日志消息......

附:为了启动服务器,我使用以下命令,也许需要修改?

uvicorn main:app --port 44444 --host 0.0.0.0 --reload  --ssl-keyfile ./key.pem 
--ssl-certfile ./certificate.pem --log-level debug

【问题讨论】:

    标签: python flask https fastapi


    【解决方案1】:

    来自uvicorndocs

    --timeout-keep-alive <int> - Close Keep-Alive connections if no new data is received within this timeout. Default: 5.

    但将其设置为 10 分钟可能不是一个好主意。为心跳断开连接有什么问题?

    【讨论】:

    • 我想保持连接打开以便重用它,而不是为每个心跳创建一个新的。这不是一个好习惯吗?为什么?
    • 打开和关闭连接是网络服务器的很多工作,因此,如果您担心资源问题,请不要这样做。我会更担心 10 分钟的僵尸连接。我不是这方面的专家,但 5 秒似乎是一个明智的默认设置。您需要一个充分的理由将其延长至 10 分钟。
    • 好的,我的意思是 10-15 秒抱歉,这是可以接受的超时吗?
    • 我无法回答,抱歉。这取决于您的应用程序、预期负载等。但如果长期连接对您很重要,也许可以查看 websockets。我认为 FastAPI 本身就支持它们。
    猜你喜欢
    • 2015-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 2011-05-17
    相关资源
    最近更新 更多