接收时间过长时如何关闭会话?

时间:2019-09-25 02:50:13

标签: python starlette

我使用了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()超过5秒,请关闭会话。

预先感谢:)。

1 个答案:

答案 0 :(得分:0)

https://docs.python.org/3/library/asyncio-task.html#asyncio.wait_for

await asyncio.wait_for(session.receive_json(), timeout=5)