尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

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

Windows定时任务 每隔一段时间(最小到秒级)执行一次指定的Python脚本
📅 发布时间:2026/6/19 11:22:19

脚本 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

 

相关新闻

  • ROS 2什么是QoS?
  • Nessus Professional 10.10 Auto Installer for macOS Tahoe
  • 2025年木饰面板行业Top10供应商终极评测及选择指南

最新新闻

  • 【GD32F427开发板试用】+ 从GPIO到USB:GD32F427V-START例程实战解析
  • 企业RAG知识库落地,应如何设计实现?
  • 2026 年 6 月 19 日北京东城区奢侈品名表回收核心门店专业测评 - 奢侈品回收
  • 2026湖北现代科技学校招生政策详解:报名条件+录取分数线+资助政策(免学费2000元/年+助学金6900元) - 速递信息
  • 物联网Lora模块串口通讯实战:数据收发与指令解析
  • 青岛名包回收避坑指南,认准资质齐全合扬门店保障交易安全 - 奢侈品交易观察员

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号