python小程序:以后台服务方式 定时 监视redis队列 (anaconda3.5.2)

本文介绍了一个使用Python编写的简单守护进程,该程序每隔一小时连接到指定的Redis服务器,检查名为'COMPANYS'的列表长度,并将检查结果记录到文件中。守护进程通过两次fork操作实现,确保其能在后台稳定运行。

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

#!/usr/bin/env python

import datetime, threading, redis

interval = 60*60

def chkRedis(): 
global interval 
now=datetime.datetime.now()
pool=redis.ConnectionPool(host='10.0.0.9', port=6380)
r = redis.Redis(connection_pool=pool)
l = r.llen('COMPANYS')
str = '%d:%s\n' % (l,now)
print(str)
with open('redis-chk.txt', 'a') as f:
f.write(str)

t = threading.Timer(interval, chkRedis)  
t.start()  


def createDaemon(stdin='/dev/null',stdout='/dev/null',stderr='/dev/null'):
import os, sys, time
sys.stdin = open(stdin,'r')
sys.stdout = open(stdout,'a+')
sys.stderr = open(stderr,'a+')
#产生子进程,而后父进程退出
try:
pid = os.fork()
if pid > 0:
sys.exit(0)
except OSError:
print('c fork OSError')
sys.exit(1)

#修改子进程工作目录
os.chdir("/home/gaohang")
#创建新的会话,子进程成为会话的首进程
os.setsid()
#修改工作目录的umask
os.umask(0)
#创建孙子进程,而后子进程退出
try:
pid = os.fork()
if pid > 0:
print("Daemon PID %d" % pid)
sys.exit(0)
except OSError:
print("cc fork OSError")
sys.exit(1)
chkRedis()


if __name__ == "__main__":
createDaemon()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值