Я пытаюсь создать сервер веб-сокетов, на котором один клиент будет отправлять свои сообщения (я знаю, что это не обычный способ использовать веб-сокет, но эта часть не мой выбор). Для этого я использую Python 3.7 и websockets 7.0.
Моя проблема: Многочисленные сообщения, отправленные клиентом, не принимаются сервером .
Вот простой код, который я использую.
import asyncio
import websockets
async def get_tag_data(websocket, path):
# print('received')
data = await websocket.recv()
print(data)
loop = asyncio.get_event_loop()
anchors_server = websockets.serve(get_tag_data, 'localhost', 9001)
loop.run_until_complete(asyncio.gather(anchors_server))
loop.run_forever()
И наоборот, когда я пытаюсь использовать python-websocket-server (который использует потоки для приема), все мои сообщения принимаются правильно.
Насколько я понимаю, asyncio & websockets, он должен управлять противодавлением : сообщения, отправленные, когда сервер занят (для обработки старых сообщений), "буферизируются" и будут обрабатываться в ближайшее время ... .
Чего мне не хватает? Нужно ли связывать прием websocket с asyncio, чтобы избежать потери сообщений?
Спасибо за ваши ответы!