1. 程式人生 > >如何優雅地處理SIGTERM信號?

如何優雅地處理SIGTERM信號?

name bre killed spa 而是 pan false __main__ sign

不中斷當前的執行,而是在一個單獨的線程中處理signal,以便mainloop()有機會優雅地停止?

import signal
import time

class GracefulKiller:
  kill_now = False
  def __init__(self):
    signal.signal(signal.SIGINT, self.exit_gracefully)
    signal.signal(signal.SIGTERM, self.exit_gracefully)

  def exit_gracefully(self,signum, frame):
    self.kill_now 
= True if __name__ == __main__: killer = GracefulKiller() while True: time.sleep(1) print("doing something in a loop ...") if killer.kill_now: break print "End of the program. I was killed gracefully :)"

如何優雅地處理SIGTERM信號?