FastAPI websocket ping/pong 超时

FastAPI websocket ping/pong timeout

我正在使用带有 @app.websocket 的 FastAPI 来侦听传入的 websocket。 FastAPI(或下方的 Starlette 或 Uvicorn)如何进行 ping/pong 心跳?这是可配置的吗?我在文档中根本找不到它。

from fastapi import FastAPI, WebSocket

app = FastAPI()

@app.websocket("/")
def ws(websocket: WebSocket):
    pass

fastapi 使用 starlette,而在幕后它似乎使用 websocketswebsockets.connect 默认使用 20 秒的 ping_intervalping_timeout,但我不知道 FastAPI 是否使用了它。

您现在可以使用以下 2 个标志:

  1. --ws-ping-interval <float> - 设置 WebSockets ping 间隔,以秒为单位。请注意,这只能用于默认的 websockets 协议。
  2. --ws-ping-timeout <float> - 设置 WebSockets ping 超时,以秒为单位。请注意,这只能用于默认的 websockets 协议。