Первое, что я бы попробовал, это увеличить буфер входящих данных вашего сокета UDP (например, через sock.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 128*1024)
), чтобы уменьшить вероятность его переполнения во время анализа данных.
Если это не такдостаточно, проделав дополнительную работу, вы можете разделить прием и анализ данных, добавив полученные пакеты в список / очередь (вместо того, чтобы сразу их анализировать) и либо проанализировав их позже (после получения всех пакетов), либов отдельном потоке (с более низким приоритетом), чтобы прием входящих пакетов не задерживался.
Если это по-прежнему не обеспечивает достаточной надежности, возможно, вы захотите перестроить свою систему для использованияTCP-поток, а не UDP-пакеты, поскольку TCP-поток автоматически уменьшает скорость передачи в соответствии со скоростью принимающей программы и автоматически отправляет пакеты по мере необходимости, если / когда они по какой-либо причине отброшены.
Обратите внимание, что UDPпакеты могут и будут потеряны по любой причине, нет ситуацииИон, в котором гарантированно будут доставлены пакеты UDP.Если вы собираетесь использовать UDP, это факт жизни, с которым вам придется либо мириться, либо найти какой-то механизм для восстановления.