Async Websocket Feed Потеря сообщений - PullRequest
0 голосов
/ 09 июля 2019

Я слушаю сообщения WebSocket с сервера как часть более крупного приложения;Пример минимального кода:

myQueue= asyncio.Queue(maxsize=10000)

async with websockets.connect('wss://url') as websocket:
   while True:
      response = await websocket.recv()
      await self.myQueue.put(response)

async def func():
   while True:
       msg = await self.myQueue.get()
       do_stuff(msg)

Однако каждые несколько дней, когда количество полученных сообщений возрастает (10-20 в секунду), некоторые сообщения теряются или принимаются в неправильном порядке.Затем программа продолжается как обычно.Недавно я добавил асинхронную очередь, которая улучшила ситуацию (выдает каждые несколько дней, а не каждые несколько часов).

Моя программа никогда не задерживается более чем на 1 секунду при получении / обработке сообщений, поэтому она не в состоянии не отставать.Я думал, что порядок для веб-сокетов был гарантирован, так что может быть причиной чрезвычайно кратковременной потери сообщений?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...