How to process SIGTERM signal gracefully?

前端 未结 7 658
刺人心
刺人心 2020-11-22 16:02

Let\'s assume we have such a trivial daemon written in python:

def mainloop():
    while True:
        # 1. do
        # 2. some
        # 3. important
              


        
7条回答
  •  醉酒成梦
    2020-11-22 16:32

    The simplest solution I have found, taking inspiration by responses above is

    class SignalHandler:
    
        def __init__(self):
    
            # register signal handlers
            signal.signal(signal.SIGINT, self.exit_gracefully)
            signal.signal(signal.SIGTERM, self.exit_gracefully)
    
            self.logger = Logger(level=ERROR)
    
        def exit_gracefully(self, signum, frame):
            self.logger.info('captured signal %d' % signum)
            traceback.print_stack(frame)
    
            ###### do your resources clean up here! ####
    
            raise(SystemExit)
    

提交回复
热议问题