需求
脚本可能被多个应用调用,但要求同一时间此脚本只有一个在执行。
思路
- 脚本执行时,先判定有没有pid文件。(pid文件是脚本执行时,生成的文件并写入其pid值)
- 有pid文件的同时,获取pid文件中的pid,检测进程是否存在。(防止脚本意外停止,但没有删除pid文件)。
- 脚本执行完后,删除pid文件。
import os
import sys
import time
import logging, logging.handlers
import psutil
logger = logging.getLogger('__main__')
formatter = logging.Formatter(
'%(asctime)s %(filename)s %(thread)d %(thread)s [line:%(lineno)d] %(levelname)s %(message)s')
file_handler = logging.handlers.RotatingFileHandler(sys.argv[0][:-3] + '.log', maxBytes=1024 * 1024 * 10, backupCount=3)
file_handler.setFormatter(formatter)
console_handler = logging.StreamHandler(sys.stdout)
console_handler.formatter = formatter
logger.addHandler(file_handler)
logger.addHandler(console_handler)
logger.setLevel(logging.DEBUG)
def check_se