How to properly handle and retain system shutdown (and SIGTERM) in order to finish its job in Python?

前端 未结 1 891
孤街浪徒
孤街浪徒 2021-02-09 22:18

Basic need : I\'ve a Python daemon that\'s calling another program through os.system. My wish is to be able to properly to handle system shutdown or SIGTERM in

相关标签:
1条回答
  • Your code does almost work, except you forgot to exit after cleaning up.

    We often need to catch various other signals such as INT, HUP and QUIT, but not so much with daemons.

    import sys, signal, time
    
    def handler(signum = None, frame = None):
        print 'Signal handler called with signal', signum
        time.sleep(1)  #here check if process is done
        print 'Wait done'
        sys.exit(0)
    
    for sig in [signal.SIGTERM, signal.SIGINT, signal.SIGHUP, signal.SIGQUIT]:
        signal.signal(sig, handler)
    
    while True:
        time.sleep(6)
    

    On many systems, ordinary processes don't have much time to clean up during shutdown. To be safe, you could write an init.d script to stop your daemon and wait for it.

    0 讨论(0)
提交回复
热议问题