接收时间过长如何关闭会话?
How to close the session when receive time too long?
我用过starlette framework
我在下面写了一条路线:
@app.websocket_route("/wss_back", name="run_in_backend")
async def wss_back(session: WebSocket):
await session.accept()
data = await session.receive_json()
await run_code_in_subprocess(session)
await session.send_json({"msgType": 1, "data": "good"})
await session.close(1000)
但我无法确定客户端会话是否会向 wss 服务器发送消息。
所以,我想设置一个接收超时时间?我怎样才能做到这一点?
如果await websocket.receive_json()
超过5s,关闭session。
提前致谢:)。
https://docs.python.org/3/library/asyncio-task.html#asyncio.wait_for
await asyncio.wait_for(session.receive_json(), timeout=5)
我用过starlette framework
我在下面写了一条路线:
@app.websocket_route("/wss_back", name="run_in_backend")
async def wss_back(session: WebSocket):
await session.accept()
data = await session.receive_json()
await run_code_in_subprocess(session)
await session.send_json({"msgType": 1, "data": "good"})
await session.close(1000)
但我无法确定客户端会话是否会向 wss 服务器发送消息。
所以,我想设置一个接收超时时间?我怎样才能做到这一点?
如果await websocket.receive_json()
超过5s,关闭session。
提前致谢:)。
https://docs.python.org/3/library/asyncio-task.html#asyncio.wait_for
await asyncio.wait_for(session.receive_json(), timeout=5)