Pythonデーモンが突然終了する原因を突き止めるために監視する最良の方法は何ですか? straceが私の最善の選択ですか、それとも仕事をするPython固有のものがありますか?予期せず終了するpythonデーモンのトラブルシューティングを行いますか?
4
A
答えて
1
私は通常、ログを追加することから始めます。少なくとも、それを起動しているものはstdout/stderrをキャプチャして、スタックトレースを保存するようにしてください。 except
ブロックを調べて、例外をサイレントにキャプチャしていないことを確認してください。
0
あなたはpdb
を使用することができます。
python -m pdb myscript.py
このようなあなたのプログラムを実行すると、それが異常終了した場合、それは事後デバッグを入力します。問題の原因がわかっている場合は、デバッグを開始する時点でimport pdb; pdb.set_trace()
を使用することもできます。ロギングも多大な助けになります。
0
上記の答えとして、python-daemonモジュールを使用している場合は注意してください。ただし、ファイルにロギングするときにロギングモジュールでは機能しませんので、手動でファイルにロギングする必要があります。
また、デーモンは、ループ内で実行してループ内で例外をキャッチすることで、障害が発生した後に再起動します。
例:
while True:
try:
log_to_file("starting daemon")
run_daemon()
log_to_file("daemon stopped unexpectedly")
sleep(1)
except Exception as err:
log_to_file(err)
関連する問題
- 1. 予期せず終了するデーモンのデバッグ
- 2. OSXはPythonを予期せずに終了し、Pythonを終了します
- 3. プログラムが予期せず終了する
- 4. MonoTouchDesignServerUnifiedが予期せず終了する
- 5. クロムドライブが予期せず終了する
- 6. Pythonプログラムが予期せず終了する
- 7. Pythonが予期せず終了する、セグメンテーションフォールト:11
- 8. WindowsスケジューラでPythonスクリプトが予期せず終了する
- 9. macOS SierraでXcode 6.4が予期せず終了しますか?
- 10. ボタンをクリックするとアプリケーションが予期せず終了する
- 11. Chromeの戻るボタンで予期せずアップロードストリームが終了する
- 12. カスタムWoocommerceテンプレートのファイルが予期せず終了する
- 13. BASHのファイルが予期せず終了する
- 14. "Killed"で春のブートアプリケーションが予期せず終了する
- 15. HttpClientでの接続が予期せず終了する
- 16. キーボードのポップアップ時にアラートダイアログが予期せず終了する
- 17. CoffeeScriptの入力が予期せず終了する
- 18. タブコントロールでコンボボックスのドロップダウンが予期せず終了する
- 19. Mac上のAndroid SDK:jspawnhelperが予期せず終了する
- 20. XQuartzが予期せず終了します
- 21. XCODE 8.0が予期せず終了します
- 22. XNA - デバッグ中にプロセスが予期せず終了する
- 23. win32スレッドが予期せずactiveXで終了する(C++)
- 24. ボタンプレスでスクリプトが予期せず終了する
- 25. Jenkinsパイプラインループが予期せず終了する
- 26. プログラムが予期せず終了するC++
- 27. Windows Mobileアプリケーションが予期せず終了する
- 28. Qt GUIアプリが予期せず終了する
- 29. テストフレームワークが予期せず終了するエラー - キュウリJava IntelliJ
- 30. Windows 7でWindowsサービスが予期せず終了する
これは、人間の相互作用を必要とするように表示されます。これは何日もの間うまく動作しますので、これはうまく動作しません。非インタラクティブなデバッグモードはありますか? – CarpeNoctem
あなたは['screen'](http://linux.die.net/man/1/screen)でそれを実行しようとすると、デバッガをトリガするときにそれにアタッチし、対話的にデバッグすることができます。非対話型デバッグモード??私はそれがロギングだと思います! – zeekay
私は "bash -x"と似た何かを意味していましたが、どこに "デバッグ"の出力を提供しますが、誰かがそれを踏んだり "キーボードのやりとり"をする必要はありません。 – CarpeNoctem