厲害了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星人」這個群體?