【问题标题】:How to close the session when receive time too long?接收时间过长如何关闭会话?
【发布时间】:2020-01-25 04:20:14
【问题描述】:

我用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,关闭会话。

提前致谢:)。

【问题讨论】:

    标签: python starlette


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-07
      • 2021-03-10
      • 2012-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多