python小程序:以後臺服務方式 定時 監視redis隊列 (anaconda3.5.2)

#!/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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章