実行中の端末が閉じていたり、SSH接続が失われたりした場合でも、必要なクリーンアップを実行するのに十分な柔軟性を備えたコードを作成する必要があります。必要なすべてのコードを1つのクラスの__del__
メソッドにラップしました。ただし、Pythonは終了時に(C ++とは異なり)それを呼び出していないようです。やってみ[atexit][1]
ましたが、どちらも呼ばれませんでした。
任意の提案をいただければ幸いです。
実行中の端末が閉じていたり、SSH接続が失われたりした場合でも、必要なクリーンアップを実行するのに十分な柔軟性を備えたコードを作成する必要があります。必要なすべてのコードを1つのクラスの__del__
メソッドにラップしました。ただし、Pythonは終了時に(C ++とは異なり)それを呼び出していないようです。やってみ[atexit][1]
ましたが、どちらも呼ばれませんでした。
任意の提案をいただければ幸いです。
signal
モジュールを使用する必要があります。SIGHUP
ターミナルウィンドウを閉じるか、SSH接続が失われたときにプログラムに送信する必要があります。SIGINT
代わりにキャッチすることもできますがSIGHUP
、これはキャッチオールソリューションです。
import signal
import sys
def signal_handler(signal, frame):
print 'Handling SIGHUP signal!'
sys.exit(0)
signal.signal(signal.SIGHUHP, signal_handler)
print 'Waiting for SIGHUP'
signal.pause()
sudo kill -1 <pid of your python process>
別のターミナルウィンドウで発行することにより、これをテストできます。