厲害了word哥,互動式實時監控調整python程序執行!

之前調試線上程序時,經常遇到的一個問題就是,線上程序出現bug,但線下調試時卻無法重現,或者說想重現需要的準備條件很繁瑣。所以我就想,能不能在線上程序出現問題時,直接切入程序,實時看到程序內部狀況,數據到底是什麼樣的。

本著這個目標,我開發了一個簡單的console介面,通過繼承抽象類的方式來保證程序提供一個命令行式交互界面,實時動態的監控調整正在運行的程序。

先寫個例子簡單演示一下:

創建test_console.py,編寫如下代碼

執行

python test_consoler.pyn

執行情況如下:

再開一個窗口,執行

python test_consoler.py --consolen

回到剛才的窗口

原程序的行為被改變了!

厲害了word哥!

回到命令行交互頁面

命令行現在所處的作用域為__init__

那麼__init__中的所有本地變數均可以訪問

通過self,我們可以改變self綁定的方法及self屬性

使用exit或者control + c退出

讓我們來看一下console類

consoler.py

console類是一個單例抽象類,為什麼是單例主要是因為console類我主要用於maxin到我的微服務類,所以必須是單例且抽象。

需要實現一個抽象屬性args,args是ArgumentParser是結果集。

所以可以通過如下方式使用。

console主要做的事情有兩件

  • 開啟一個console服務
  • 開啟一個console客戶端

當啟動程序時不加--console參數時,默認啟動一個線程服務來監聽console客戶端的鏈接。

當啟動程序時添加了--console參數時,程序開啟一個console並連接服務。

該console類已經被maxin進了monitors.py中的微服務基類中,可以直接繼承使用

靈感來源於werkzeug中關於debug中間件的實現。

項目地址:ShichaoMa/toolkit

安裝:

pip install toolkity==1.3.4n

相關文章:拒絕重複造輪子!python實用工具類及函數大推薦!

感謝閱讀!


推薦閱讀:

python網頁爬蟲是非法的嗎?
Python中 交換整個字典的鍵與值 最快和最簡潔的方法分別是什麼?
如何使用Python實現多進程編程?
對寫的python代碼進行加密有什麼好的實現方法?
如何看待「Python星人」這個群體?

TAG:Python | Python开发 | Python库 |