Debian で単一スレッドの Python 2.7 デーモン/サービスを実行しています。特定のハードウェア機能を無効にする重要なクリーンアップ コードがいくつかあります。
import sys
import atexit
import signal
from my_job import give_high_fives
from my_cleanup import prevent_the_apocalypse
atexit.register(prevent_the_apocalypse)
signal.signal(signal.SIGTERM, prevent_the_apocalypse)
signal.signal(signal.SIGHUP, prevent_the_apocalypse)
try:
while True:
give_high_fives()
finally:
prevent_the_apocalypse()
これは妄想的に見えますし、クリーンアップ コードを何度も呼び出すのも好きではありません。現在、クリーンアップが で 3 回または 4 回呼び出されているようSIGTERM
です。
prevent_the_apocalypse
考えられるすべての終了条件で正確に 1 回だけの方法はありますか?