我有一個應用程序,調用telnetlib.read_until()。大多數情況下,它工作正常。 但是,當我的應用程序的telnet連接失敗時,很難調試確切的原因。它是我的腳本還是服務器連接狡猾? (這是一個開發實驗室,所以有一個lot狡猾的服務器)。「窺探」蟒蛇的telnetlib
我想什麼做的是能夠很容易地窺探)放入煮好的隊列前,我的應用程序調用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()
是否有一個(更Python)的方式來窺視這個telnetlib.process_rawq() - 內在價值無需修改telnetlib.py?
謝謝。