• 问题描述

    websocket方式连接Sanic服务器,经常断开连接。

  • 解决方案

    aiohttp throws CancelledError into coroutine if http connection was disconnected.1

    这个问题本源在于websocket连接断开了,在本例中因为websocket server是每隔几分钟推送有一次数据,时间间隔太长导致连接断开。进而导致如下错误:

    websockets.exceptions.ConnectionClosedError: code = 1006 (connection closed abnormally [internal]), no reason

    参见websockets.readthedocks.io :

    code = 1006 means that the TCP connection was lost. As a consequence, the WebSocket connection was closed without receiving a close frame, which is the abnormal.

    修改websocket client connect的参数ping_timeout = 60,默认是20s

    import websockets
    websockets.connect(uri, ping_timeout = 60)
    

    问题解决。

  • References


  1. concurrent.futures._base.CancelledError when high throughput in aiohttp web application #108 ↩︎

更多推荐