我有一个调用 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() 内部的
有没有(更 Pythonic)的方法来窥探这个 telnetlib.process_rawq()-internal 值而不修改 telnetlib.py?
谢谢。