概要
目前在做个发布项目,需要一直运行单个Python脚本,以便于对需要发布的任务进行发布逻辑操作,并且是在Linux下运行的
目前能想到的方法有两个:
- Crontab定时
- Systemctl守护进程
最后决定使用Systemctl守护进程来做,一方面是因为Crontab最小粒度只支持到一分钟,也就是1分钟执行1次,而这个脚本需要的实时性较高,7、8秒一次,另一方面,使用守护进程来做的话,一旦挂了能实现重启进程
方法
release.py后台常驻运行
以守护进程的方式运行,一旦挂掉自动重启
需要常驻的脚本:release.py
# -*- coding:utf-8 -*-
import time
# 常驻进程,每8秒执行一个任务的发布
while 1:
print(time.gmtime())
# Todo 执行操作
run()
# 延时8秒
time.sleep(8)
常驻进程,每8秒执行一次
编写systemd:
vim /etc/systemd/system/auto_release.service
[Unit]
Description=The python script used for release
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=simple
ExecStart=/