Я слушаю сообщения 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 секунду при получении / обработке сообщений, поэтому она не в состоянии не отставать.Я думал, что порядок для веб-сокетов был гарантирован, так что может быть причиной чрезвычайно кратковременной потери сообщений?