1006 Соединение закрыто ненормально из-за ошибки в Python 3.7 websockets - PullRequest
0 голосов
/ 09 января 2019

У меня та же проблема, что и у github, с веб-сокетами python: https://github.com/aaugustin/websockets/issues/367

Предлагаемое решение не работает для меня, хотя. Я получаю ошибку:

websockets.exceptions.ConnectionClosed: Соединение WebSocket закрыто: код = 1006 (соединение закрыто ненормально [внутреннее]), без причины

Это мой код:

async def get_order_book(symbol):
    with open('test.csv', 'a+') as csvfile:
        csvw = csv.writer(csvfile, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL)
        DT = Data(data=data, last_OB_id=ob_id, last_TR_id=tr_id, sz=10, csvw=csvw)

        while True:
            if not websocket.open:
                print('Reconnecting')
                websocket = await websockets.connect(ws_url)
            else:
                resp = await websocket.recv()
                update = ujson.loads(resp)
                DT.update_data(update)

async def get_order_books():
    r = requests.get(url='https://api.binance.com/api/v1/ticker/24hr')
    await asyncio.gather(*[get_order_book(data['symbol']) for data in r.json()])

if __name__ == '__main__':
    asyncio.run(get_order_books())

Я тестировал его, закрывая свое интернет-соединение, но после десятисекундной задержки он все равно возвращает ошибку 1006.

Я использую Python 3.7 и Websockets 7.0.

Дайте мне знать, что вы думаете, спасибо!

1 Ответ

0 голосов
/ 13 февраля 2019

Итак, я нашел решение:

Когда соединение закрывается, по какой-то причине оно разрывается из цикла while. Таким образом, чтобы веб-розетка работала, вы должны окружить

resp = await websocket.recv()

с попыткой ... кроме и

print('Reconnecting')
websocket = await websockets.connect(ws_url)

в части обработки исключений.

...