1
我有一個運行幾個子進程的python腳本。將子進程pid寫入日誌文件時出現錯誤
我想實現的是,我想將子進程進程ID寫入單獨的日誌文件。子進程可以運行幾個小時,所以我想用PID來跟蹤它們。
不知何故,我無法將PID寫入日誌文件,因爲我遇到了異常。
tmprocess = subprocess.Popen(['sudo', logstashbin, '-f', tmconf], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
tmprocess.wait()
segmentprocess = subprocess.Popen(['sudo', logstashbin, '-f', segmentconf], stdout=subprocess.PIPE, stderr=subprocess.STDOUT).pid
print segmentprocess
try:
pidfile = open("pid.log", "a+")
try:
pidfile.write(segmentprocess)
finally:
pidfile.close()
except:
raise IOError("Error")
這是輸出我得到的,
1237
Traceback (most recent call last):
File "./init.py", line 285, in <module>
main(sys.argv[1:])
File "./init.py", line 282, in main
init(arg)
File "./init.py", line 264, in init
run_logstash(langPath)
File "./init.py", line 228, in run_logstash
raise IOError("Error")
IOError: Error
雖然正在打印的PID是,它沒有得到寫入文件。 注意:如果我只是通過替換「segmentprocess」將一些隨機字符串寫入日誌文件,那麼它確實有效。所以文件打開沒有任何問題。
你的壓痕看起來不正確。你能檢查它嗎?此外,您提供的堆棧跟蹤似乎會引發與您的代碼中不同的異常。有什麼我們沒有看到?你能否包括你提供的行號範圍?另外,如果你試圖調試異常,爲什麼會重新引發另一個異常?只要讓真正的例外冒出來並將其張貼在這裏。不要抓住它,如果你這樣做,確保你再次提升。而不是'提高IOError(「Error」)'。 –
@JamieCounsell,非常感謝大家。我在我的帖子中修正了上面的壞縮進(我的原始代碼沒有縮進問題)。我實際上修復了錯誤,我發現錯誤並不明智。當我刪除try,except塊時,我看到實際的錯誤「TypeError:expected a character buffer object」。我只需要進行類型轉換,並且錯誤消失了。這樣的noob錯誤。我想我最好刪除這篇文章?再次感謝你的幫助。 – Vinod
很高興你知道了!我發表了我的評論作爲答案。刪除帖子或標記爲已解決。 –