python如何獲取uwsgi的各個worker的status

一般來講,我們獲取每個uwsgi的狀態,可以通過uwsgitop命令,得到實時的一個狀態,如下圖:

 

 

但是該命令跟top命令不一樣,top命令可以通過top -n 1 類似命令得到一個靜態的輸出,python通過os.open或者subprocess等可以獲得輸出,但是uwsgitop並沒有封裝該參數。不過我們想通過python來獲取每個worker的status狀態,可以通過uwsgi --connect-and-read命令,後面加上uwsgi配置文件的stats,完全命令類似這種:uwsgi --connect-and-read 127.0.0.1:9092

python通過調用這個shell命令,會得到一個字符串,字符串裏面存在一個字典,如圖:

 

最下面就是各個worker的狀態了,我們可以看見如下如的status爲idle

有了這個命令,剩下的就簡單了,python調用該命令得到輸出結果,處理下就能得到你想要的結果,不僅如此,通過該命令,你還可以獲得每個uwsgi的子進程的pid,比如你想到重啓uwsgi,但是又有部分worker處於busy狀態,你擔心重啓會導致無法預料的後果,但是又十分想重啓,這個時候就可以只啓動status是idle狀態的子進程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章