Справочная информация:
У меня есть приложение Python (консоль), которое включает сервер сокетов. Это приложение получает сообщения от стороннего клиента (запуск и остановка сообщений от определенного процесса A) для управления задачей записи данных (например, запуск и остановка записи). Вы можете думать об этом как о получении сообщений через сокеты, чтобы начать и остановить запись данных из того же процесса А в течение примерно 5 минут. Сторонний клиент отправляет сообщения в течение почти 2 часов, а затем останавливается, и в конце приложение Python будет создавать группу файлов за сеанс.
Это приложение работает круглосуточно (без присмотра в Windows10 Настольный компьютер), и также есть консоль регистрации, но я заметил, что иногда (не определили шаблон) после запуска в течение 4 или 5 дней я получаю удаленный доступ к системе, используя TeamViewer, и окно консолипоказывая, что последнее сообщение было 1-2 дня назад. Но как только я нажимаю на консоль или нажимаю клавишу в этой консоли, я получаю полный пакет сообщений от сеансов, пропущенных в течение этих последних дней, таким образом, сообщения о запуске и остановке принимаются «одновременно», что приводит к мусорным файлам данных.
Код:
Это часть кода сервера сокетов. Я знаю, что я устанавливаю буфер 1024, но при нормальной работе этот буфер не должен быть заполнен для чтения данных
with conn:
#display client information
logger.info('Connected with ' + addr[0] + ':' + str(addr[1]))
while self.enable:
#now keep talking with the client
data = conn.recv(1024)
if data:
self.data_cb(data)
else:
logger.debug("no data, closing connection." )
break
Вопрос:
Чтоведет к такому поведению буферизации? Может ли это быть ...
- сторонним клиентом?
- моего Python-приложения?
- Что-то в сети Windows?
Кто-нибудь испытывал что-то подобное?
Любая идея действительно ценится, поскольку я понятия не имею, почему это происходит? Спасибо.
Редактировать - Дополнительная информация:
- Приложение работает на реальной настольной машине (без виртуальной машины)
- Приложение может работать непрерывно в течение почти месяца (просто остановлено по уважительным внешним причинам, отключению питания, обновлению версии и т. Д.)
- В последний раз, когда я обращался через Teamviewer и заметил, чтоприложение не получало сообщений в течение дня (приложение работало в течение 4 дней в то время), НО я предположил, что это было по другой причине и планировал пойти на сайт и проверить (потому что что-то подобное случалось раньше). Я получил доступ на следующий день, и это было то же самое. Но на третий день я нажимаю на консоль и пытаюсь просмотреть сообщения, и сразу в журнале появляется целая партия сообщений за предыдущие 2 дня.
- Приложение работает в течение 2 недель и работаетне получать доступ к ПК через TeamViewer в течение последних 4 дней, если доступ к нему может предотвратить возникновение проблемы.