2016-07-23 63 views
-1

我有一個腳本,它真的是越野車,每過幾個小時它就會因爲錯誤而停下來。我不用Python編寫代碼,但我知道基礎知識,所以我想知道如何製作腳本來檢查另一個腳本是否有錯誤,如果它是真的,只需重新運行它? 對不起,沒有給出任何例子,但我想你明白了,因爲我不擅長Python,因此比試圖理解腳本並編輯它更容易。任何幫助是極大的讚賞。檢查一個python腳本是否正常運行,如果它沒有重新運行它?

+1

哪來的腳本內容?請回顧[如何創建最小,完整和可驗證示例](http://stackoverflow.com/help/mcve) –

+1

這就是[supervisord](http://supervisord.org/)等類似的工具。對於。嗯,不是真的,腳本應該是固定的,但過程控制器至少可以進行監視和重新啓動。 – dhke

+0

內容是無關緊要的,我要求一種方法來檢查腳本是否停止,無論錯誤是什麼 –

回答

2

到目前爲止,最簡單的方法是等待它退出並在崩潰時總是重新啓動;該程序運行時,以下bash循環會做什麼,並會盡快退出重新啓動:

while true 
do 
    python buggy_script.py arguments 
    echo oops, restarting... 
done 

就是這樣。它會永遠運行,直到你殺死運行它的bash腳本。

PS。當然,這假設你在OS X或Linux上;如果您使用Windows,請使用等效的批處理或PowerShell腳本。

+0

我建議使用PowerShell而不是批處理;一批對我來說很可怕。 – GingerPlusPlus

+0

當然,PowerShell呢。任何有循環的東西都可以。 – alexis

0

您可以爲該腳本創建一個守護程序。

基本上將主要功能保留在永久運行的循環中。 import logging import time if __name__ == '__main__': while True: //log errors logging.basicConfig(filename='log_file.log', level=logging.DEBUG) // use try except to handle exceptions try: // your code statements and function calls except Exception as e: // log the error for debugging logging.error(str(e)) // sleep the program if you want it to for desired amount of time. time.sleep(delay)

我設置的日誌級別是調試。您可以將其設置爲您自己選擇的任何其他設置。

參考文獻:

記錄文檔 - https://docs.python.org/3/library/logging.html

處理異常 - https://docs.python.org/3/tutorial/errors.html#handling-exceptions

相關問題