python守护程序

#主函数
if __name__ == '__main__':
    #以下注释部分为采用守护进程方案启动程序,若采用此方案,将注释打开,并将最后一行(server())注释掉 
    logger = logging.getLogger(config.logger_name)
    if config.server_daemon:
        try:
            pid = os.fork()
            if pid > 0:
                # exit first parent
                os._exit(0)
        except OSError, e:
            logger.error("fork #1 failed: %d (%s)" % (e.errno, e.strerror))
            os._exit(0)
        # decouple from parent environment
        #os.chdir("/")
        os.setsid()
        os.umask(0)
        # do second fork
        while(True):
            try:
                pid = os.fork()
                logger.info( "pid: %d",pid)
                if pid == 0:
                    serve()
                if pid > 0:
                    logger.info("Server PID %d, Daemon PID: %d" % (pid, os.getpid()))
                    os.wait()
                    logger.info("child exit, restarting")
                    time.sleep(3)
                    dir_path = os.path.dirname(os.path.realpath(__file__))
                    fs = glob.glob(dir_path+'/core.*')
                    for f in fs:
                        os.remove(f)
            except OSError, e:
                logger.error("fork #2 failed: %d (%s)" % (e.errno, e.strerror))
                os._exit(0)
    else:
        serve()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值