У меня есть приложение, которое вызывает telnetlib.read_until(). По большей части это работает нормально. Однако, когда telnet-соединение моего приложения не работает, трудно отладить точную причину. Это мой скрипт или подключение к серверу изворотливое? (Это лаборатория разработки, поэтому там много сомнительных серверов).
Что я хотел бы сделать, так это иметь возможность легко отслеживать данные, помещенные в подготовленную очередь, до того, как мое приложение вызовет telnetlib.read_until() (таким образом, надеюсь, что это не повлияет на работу моего приложения).
Покопавшись в telnetlib.py, я обнаружил, что «buf[0]» — это как раз те данные, которые мне нужны: недавно добавленные данные без повторения, вызванного отслеживанием «cookedq». Я могу вставить строку прямо перед концом telnetlib.process_rawq(), чтобы распечатать обработанные данные по мере их получения с сервера.
telnetlib.process_rawq ...
...
self.cookedq = self.cookedq + buf[0]
print("Dbg: Cooked Queue contents = %r" % buf[0] <= my added debug line
self.sbdataq = self.sbdataq + buf[1]
Это хорошо работает. Я могу видеть данные почти точно так, как их получает мое приложение, не влияя на его работу.
Вот вопрос: есть ли более эффектный способ добиться этого? Этот подход является базовым и работает, но мне придется не забывать вносить это изменение каждый раз, когда я обновляю библиотеки Python.
Мои попытки просто расширить telnet.process_rawq() не увенчались успехом, так как buf является внутренним для telnet.process_rawq().
Есть ли (более питонический) способ отследить это внутреннее значение telnetlib.process_rawq() без изменения telnetlib.py?
Спасибо.