No puedo entender cómo se maneja el ping pong para el paquete python websockets. El siguiente es un servidor websocket fastapi simple y un cliente python. Espero un error de tiempo de espera de keepalive, pero eso no sucede.
Servidor FastAPI:
from fastapi import FastAPI, WebSocket import asyncio app = FastAPI() @app.get("/") async def get(): return "Hello" @app.websocket("/ws") async def websocket_endpoint(websocket: WebSocket): await websocket.accept() data = await websocket.receive_text() await websocket.send_text('test') await asyncio.sleep(45) await websocket.send_text(f"Stop")Cliente Python
import websockets import asyncio async def communicate(): async with websockets.connect("ws://localhost:8000/ws", ping_timeout=2, ) as websocket: await websocket.send("Tom") while True: response = await websocket.recv() print(response) if response == "Stop": break if __name__ =="__main__": asyncio.get_event_loop().run_until_complete(communicate())Gastos esperados
prueba -- < error de tiempo de espera de actividad >
Resultado real:
prueba
Deténgase
--> ¿Alguien podría explicar cómo funciona el mecanismo de ping-pong y cómo la cantidad de núcleos de CPU o los trabajadores uvicornios disponibles afectan el mecanismo de ping-pong?
Gracias de antemano.