FastAPI websocket ping/pong 超时

Jon*_*han 10 websocket starlette fastapi uvicorn

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

from fastapi import FastAPI, WebSocket

app = FastAPI()

@app.websocket("/")
def ws(websocket: WebSocket):
    pass
Run Code Online (Sandbox Code Playgroud)

fastapi使用starlette,并且在幕后似乎使用websocketswebsockets.connect默认情况下使用 20 秒的 aping_intervalping_timeout,但我不知道 FastAPI 中是否使用了它。

eur*_*i10 6

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

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

  • @Sayanc2000当运行uvicorn时,你可以将它们传递给`run`方法,例如`uvicorn.run('app:app', ws_ping_interval=300, ws_ping_timeout=300)` (2认同)