当前位置: 首页 > 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.hskmm.com/?act=detail&tid=33142

相关文章:

  • 深入解析米尔全志T536核心板的实时性技术突破
  • 2025年西安买房终极指南:十大热门楼盘排名揭秘
  • PHPMyAdmin上传SQL文件报错:413 Request Entity Too Large
  • Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10
  • 2025 年电动球阀厂家最新推荐榜:覆盖智能灌溉、物联网、远程控制等场景,深度解析行业优质企业及选择指南
  • ROS 2什么是QoS?
  • Office 2021 for mac 安装、激活教程
  • 接触式位移波形优化
  • VMware Workstation Fusion 25H2:采用日历版本命名与全新功能
  • Nessus Professional 10.10 Auto Installer for macOS Tahoe
  • 常见英语翻译汉语
  • CSP-S模拟33
  • 2025年木饰面板行业Top10供应商终极评测及选择指南
  • 【活动预告】2025斗拱开发者大会,共探支付与AI未来
  • 2025年口碑好的石材源头厂家排行榜:十大优质供应商全面解析
  • 2025年口碑最佳的石材生产厂家Top10排名
  • 2025 年调节阀厂家最新推荐榜:衬氟 / 气动 / 电动全类型技术领先企业权威盘点,采购优选指南
  • 2025秋_14
  • 2025 年最新衬氟球阀实力厂家排行榜:聚焦气动 F46 电动三通美标等类型,优选技术质量双优企业电动/三通/美标/耐腐蚀衬氟球阀厂家推荐
  • 数学工作者
  • 豆包生成图片去除水印
  • 基于WebRTC技术打通音视频实时通话!EasyCVR+EasyRTC,这波操作太秀了!
  • 2025 年脱油机厂家最新推荐榜:覆盖五金铝屑铜屑金属多类型设备,权威解析优质厂商选择指南
  • Dc-3靶机渗透
  • 【每日Arxiv热文】ICLR2026 !SAM3重磅来袭:能“听懂人话”的分割模型,性能狂飙2倍!
  • 探索 PHP-FPM 进程池的最佳配置方案:参数解析、场景适配与问题解决
  • 生活随感:和谐生活,你我共「营」 - tfel
  • 2025 河道护栏源头厂家最新推荐排行榜权威发布:聚焦全流程服务与高性价比,含新锐品牌优选指南河道绳索护栏/河道景观护栏厂家推荐
  • 10.17 NOIP 模拟赛 T1. 并非贪心
  • 基于 JuiceFS 构建 AI 推理:多模态复杂 I/O、跨云与多租户支持