FastAPI WebSocket ping/PONG超时WebSocket、FastAPI、PONG、ping

2023-09-03 11:23:37 作者:迷失了自我

我在@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默认使用ping_intervalping_timeout20秒,但我不知道FastAPI中是否使用了该值。

推荐答案

websocket http socket

现在可以使用以下两个标志:

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