python to be linux daemon

本文介绍如何使用python-daemon库创建Linux服务,通过示例代码展示了守护进程的基本配置和日志管理,包括设置日志级别、路径等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

所需第三方库:python-daemon[https://pypi.python.org/pypi/python-daemon/]

使用方式:

  python linux_service.py start/stop/restart

from mythings import start
from daemon import runner
import os
import logging
import inspect

class App:

    def __init__(self):
        self.stdin_path = '/dev/null'
        self.stdout_path = '/dev/tty'
        self.stderr_path = '/dev/tty'
        self.pidfile_path = '/tmp/foo.pid'
        self.pidfile_timeout = 5
        self.status = {'alive': True}
        this_file = inspect.getfile(inspect.currentframe())
        current_path = os.path.abspath(os.path.dirname(this_file))
        self.logfile = os.path.join(current_path, 'service.log')

    def _getLogger(self):
        logger = logging.getLogger('[My Service]')
        logger.setLevel(logging.DEBUG)
        fh = logging.FileHandler(self.logfile)
        fh.setLevel(logging.DEBUG)
        #ch = logging.StreamHandler()
        #ch.setLevel(logging.DEBUG)
        formatter = logging.Formatter('%(asctime)s %(name)-12s %(levelname)-8s %(message)s')
        fh.setFormatter(formatter)
        #ch.setFormatter(formatter)
        logger.addHandler(fh)
        #logger.addHandler(ch)
        logger.info('init logger...')
        return logger

    def run(self):
        self.logger = self._getLogger()
        self.logger.info('linux svc do run...')
        start(self.status, self.logger)


app = App()
daemon_runner = runner.DaemonRunner(app)
daemon_runner.do_action()

备注:

日志级别:UNSET < DEBUG < INFO < WARNNING < ERROR<CRITICAL

ch.setLevel(logging.DEBUG)时,可以打印出级别大于等于DEBUG的日志(包括DEBUG,INFO ,WARNNING , ERROR,CRITICAL)

转载于:https://www.cnblogs.com/flowjacky/p/4953758.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值