feat: 添加定时任务后台运行和停止功能

新增service_runner.py用于后台运行定时任务,使用pythonw.exe实现无窗口运行
新增stop_scheduler.py用于停止后台定时任务进程
调整scheduler.py中的任务执行时间
This commit is contained in:
teddy 2025-06-24 17:49:10 +08:00
parent 84288fc66b
commit 546ca9dfe2
3 changed files with 46 additions and 1 deletions

View File

@ -22,7 +22,7 @@ def run_sendmsg():
def main(): def main():
"""主函数 - 设置定时任务""" """主函数 - 设置定时任务"""
# 每天17:30执行任务 # 每天17:30执行任务
schedule.every().day.at("17:27").do(run_sendmsg) schedule.every().day.at("17:40").do(run_sendmsg)
print(f"[{datetime.now()}] 定时任务已启动将在每天17:30执行sendmsg.py") print(f"[{datetime.now()}] 定时任务已启动将在每天17:30执行sendmsg.py")
print("按Ctrl+C停止程序") print("按Ctrl+C停止程序")

20
service_runner.py Normal file
View File

@ -0,0 +1,20 @@
import subprocess
import sys
import os
from pathlib import Path
def run_in_background():
"""在后台运行定时任务"""
script_path = Path(__file__).parent / "scheduler.py"
# 使用pythonw.exe在后台运行无窗口
pythonw_path = sys.executable.replace('python.exe', 'pythonw.exe')
subprocess.Popen([pythonw_path, str(script_path)],
cwd=str(Path(__file__).parent),
creationflags=subprocess.CREATE_NO_WINDOW)
print("定时任务已在后台启动")
if __name__ == "__main__":
run_in_background()

25
stop_scheduler.py Normal file
View File

@ -0,0 +1,25 @@
import subprocess
import sys
import os
def stop_scheduler():
"""停止定时任务进程"""
try:
# 查找并结束scheduler.py进程
result = subprocess.run(['tasklist', '/FI', 'IMAGENAME eq pythonw.exe', '/FO', 'CSV'],
capture_output=True, text=True)
if 'scheduler.py' in result.stdout:
# 结束包含scheduler.py的pythonw进程
subprocess.run(['taskkill', '/F', '/IM', 'pythonw.exe'], check=True)
print("定时任务已停止")
else:
print("未找到运行中的定时任务")
except subprocess.CalledProcessError as e:
print(f"停止进程时出错: {e}")
except Exception as e:
print(f"发生错误: {e}")
if __name__ == "__main__":
stop_scheduler()