2016-07-23 17 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

関連する問題