python [Python中的虚拟守护进程]一个虚拟守护进程,除了睡眠之外什么都不做,对于测试systemd和其他服务管理器非常有用#python #daemon

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python [Python中的虚拟守护进程]一个虚拟守护进程,除了睡眠之外什么都不做,对于测试systemd和其他服务管理器非常有用#python #daemon相关的知识,希望对你有一定的参考价值。

#!/usr/bin/env python

from time import sleep
from sys import argv, exit, stderr
import signal
import os

RUNDIR='/var/run/racktop'
PIDFILE='%s/dummy.pid' % RUNDIR


def cleanup():
    os.unlink(pidfile)
    exit(0)

def handler(signum, frame):
    print "Caught Signal. Terminating..."
    cleanup()

def idle(time=30):
    print "Sleeping for %d seconds" % time
    sleep(time)


if len(argv[:]) > 1:
    key, val = argv[1].split('=')
    if key == '--pidfile':
        pidfile=val
else:
    pidfile=PIDFILE

try:
    mypid = os.getpid()

    signal.signal(signal.SIGTERM, handler)

    try:
        if not os.path.exists(os.path.dirname(pidfile)):
            os.mkdir(os.path.dirname(pidfile))
    except OSError as e:
        stderr.write("Failed to create run directory: %s" % e.strerror)

    try:
        with open(pidfile, 'wb') as pf:
            pf.write("%d\n" % mypid)
    except OSError as e:
        stderr.write("Failed to write PID to file: %s" % e.strerror)
    
    while True:
        idle()
except KeyboardInterrupt as e:
    print "Kill Signal Received. Exiting..."
    cleanup()

以上是关于python [Python中的虚拟守护进程]一个虚拟守护进程,除了睡眠之外什么都不做,对于测试systemd和其他服务管理器非常有用#python #daemon的主要内容,如果未能解决你的问题,请参考以下文章

Python中的生产者消费者模型

Python中的生产者消费者模型

python中的daemon守护进程实现方法

python学习笔记——守护进程

119 python程序中的线程操作-守护线程

python下编写守护进程