当前位置: 首页 > news >正文

Windows定时任务 每隔一段时间(最小到秒级)执行一次指定的Python脚本

脚本 service_check_admin.py

import requests
import subprocess
import sys
import os
import logging
from time import sleep# 配置日志 - 记录到文件以便后台运行时查看
LOG_FILE = "service_monitor1.log"
logging.basicConfig(level=logging.INFO,format='%(asctime)s - %(levelname)s - %(message)s',handlers=[logging.FileHandler(LOG_FILE),logging.StreamHandler(sys.stdout)  # 保留控制台输出(后台运行时不可见)]
)
logger = logging.getLogger(__name__)# 服务配置
SERVICE_URLS = ["http://127.0.0.1:8089/index.html"# "http://127.0.0.1:9999"
]
JAR_COMMAND = r"java -jar E:\qaml\datax\dataxweb\datax-admin-2.1.2.jar"  # 修改为你的JAR路径
# JAR_COMMAND = r"java -jar E:\qaml\datax\dataxweb\datax-executor-2.1.2.jar"
TIMEOUT = 10  # 请求超时时间(秒)
MAX_RETRIES = 2  # 检测失败时的重试次数
RETRY_DELAY = 5  # 重试间隔(秒)def check_service(url):"""检查单个服务的可用性"""try:response = requests.get(url, timeout=TIMEOUT)if response.status_code == 200:logger.info(f"服务正常: {url}")return Trueelse:logger.warning(f"服务响应异常: {url} (状态码: {response.status_code})")return Falseexcept requests.exceptions.RequestException as e:logger.error(f"服务连接失败: {url} - {str(e)}")return Falsedef check_all_services():"""检查所有服务的可用性(带重试机制)"""logger.info("开始服务健康检查...")for attempt in range(1, MAX_RETRIES + 1):all_ok = Truefor url in SERVICE_URLS:if not check_service(url):all_ok = Falsebreak  # 发现一个失败就停止检查其他URLif all_ok:logger.info(f"所有服务运行正常 (尝试 {attempt}/{MAX_RETRIES})")return Trueif attempt < MAX_RETRIES:logger.warning(f"检测失败,{RETRY_DELAY}秒后重试 ({attempt}/{MAX_RETRIES})")sleep(RETRY_DELAY)logger.error(f"所有 {MAX_RETRIES} 次尝试均失败")return Falsedef start_jar_service():"""在Windows后台启动JAR服务(无窗口)"""logger.info("尝试启动JAR服务...")try:# 使用Windows特有的CREATE_NO_WINDOW标志startupinfo = subprocess.STARTUPINFO()startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOWstartupinfo.wShowWindow = 0  # 0 = SW_HIDE (隐藏窗口)process = subprocess.Popen(JAR_COMMAND,stdout=open("jar_output1.log", "w"),stderr=open("jar_error1.log", "w"),startupinfo=startupinfo,creationflags=subprocess.CREATE_NO_WINDOW)logger.info(f"JAR服务已启动 (PID: {process.pid})")return Trueexcept Exception as e:logger.error(f"启动JAR服务失败: {str(e)}")return Falsedef main():"""主函数:执行一次完整的健康检查和必要的重启"""if check_all_services():logger.info("服务状态正常,无需操作")sys.exit(0)  # 正常退出else:logger.warning("检测到服务异常,尝试重启...")if start_jar_service():logger.info("服务重启成功")sys.exit(1)  # 异常但已处理else:logger.error("服务重启失败")sys.exit(2)  # 异常且处理失败if __name__ == "__main__":logger.info("====== 服务检测开始 ======")main()logger.info("====== 服务检测结束 ======")

 bat执行文件:start_check_admin.bat

@echo off
echo 进度 100% 已完成 >> status.log
start /B pythonw "D:\datax\dataxweb\service_check_admin.py"
exit

 

image

 

image

 

image

 

image

 

http://www.gsyq.cn/news/23077.html

相关文章:

  • 深入解析米尔全志T536核心板的实时性技术突破
  • 2025年西安买房终极指南:十大热门楼盘排名揭秘
  • Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10
  • VMware Workstation Fusion 25H2:采用日历版本命名与全新功能
  • 常见英语翻译汉语
  • CSP-S模拟33
  • 数学工作者
  • 基于WebRTC技术打通音视频实时通话!EasyCVR+EasyRTC,这波操作太秀了!
  • k8s学习笔记10—— 临时卷EV
  • 2025 河道护栏源头厂家最新推荐排行榜权威发布:聚焦全流程服务与高性价比,含新锐品牌优选指南河道绳索护栏/河道景观护栏厂家推荐
  • G1 垃圾回收器详解 原理
  • Qoder 重磅升级,推出 Quest Remote 功能,像发邮件一样将任务委派到云端
  • 【SPIE出版 | ISSN已确定 | 连续4届稳定见刊检索】第五届计算机图形学、人工智能与数据处理国际学术会议 (ICCAID 2025)
  • 2025多功能防水篷布厂家推荐:成硕达塑业,品质卓越用途广泛!
  • Windows系统Web端钉钉打开H5链接无法展示图片
  • 2025危险品运输推荐盘锦畅奥,专业安全服务值得信赖!
  • AI元人文构想:一种负责任的文明演化框架研究报告
  • 少时诵诗书上说试试说试试
  • 找到M3U8直播源的方法
  • 基于模糊C均值聚类(FCM)的图像分割技术
  • 2025年管道安装厂家权威推荐榜单:专业施工与优质服务口碑之选!
  • 2025年聚乙烯多功能防水篷布厂家推荐排行榜,耐用防水,户外必备优质品牌!
  • uml建模复习心得 - 2305
  • SQL Server中关于 INSERTED.Id 与 SCOPE_IDENTITY() 获取新增数据的Id
  • 2025年视频拍摄服务权威推荐榜:创意剪辑与高清画质完美结合,打造视觉盛宴!
  • pytorch p66实训二
  • 2025年网络推广服务商权威推荐榜单,SEO优化,SEM营销,社交媒体推广,内容营销公司推荐
  • 日志分析-Tomcat日志分析
  • 2025年手持式光谱仪厂家权威推荐榜单:精准检测与便携操作的行业首选!
  • Notepad++中替换时保留分组字符