我正在編寫一個主管事件監聽器,它可以將進程狀態事件發送到隊列中以供進一步處理。事件監聽器是用Python編寫的,我們稱之爲handler.py。我有一個Python內部構建和發佈系統,它讓我可以從任何使用無所不在的bash腳本(稱爲launcher.sh)我的服務器執行Python腳本之前創建虛擬環境,基本上是這樣的子shell中的主管eventlistener
...
create virtualenv
activate virtualenv
python -m main_module
我然後配置事件監聽器在我的上司情況下,像這樣:
[eventlistener:feedback]
command = launcher.sh handler.py
events=PROCESS_STATE
我可以看到處理器打印READY \ n至它的標準輸出,但沒有任何事件的傳播下去,最後主管開始抱怨不得不事件緩衝區溢出。如果我然後改變事件監聽器配置來直接調用python,就像這樣,事情就會變成現實。
[eventlistener:feedback]
command = <path to virtualenv>/bin/python handler.py
events=PROCESS_STATE
有一兩件事我想是使用EXEC蟒蛇內launcher.sh,我可以看到沒有子進程催生了這種方式,但它仍然無法正常工作打電話。我想知道這是否與緩衝stdout寫入或類似的東西有關,但我在這個深度的知識是有限的。將不勝感激任何幫助。