From 84288fc66b26961194575648485af80ae450be9e Mon Sep 17 00:00:00 2001 From: teddy Date: Tue, 24 Jun 2025 17:31:49 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E9=87=8D=E6=9E=84=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E4=BB=BB=E5=8A=A1=E5=92=8C=E6=B6=88=E6=81=AF=E5=8F=91?= =?UTF-8?q?=E9=80=81=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 删除start_scheduler.bat脚本,改为直接运行scheduler.py - 重构scheduler.py,添加日志记录和主函数封装 - 重构sendmsg.py,将逻辑封装到函数中并添加返回值 - 调整定时任务执行时间为每天17:30 --- scheduler.py | 37 +++++++++++++++++++++++-------- sendmsg.py | 53 ++++++++++++++++++++++++--------------------- start_scheduler.bat | 9 -------- 3 files changed, 56 insertions(+), 43 deletions(-) delete mode 100644 start_scheduler.bat diff --git a/scheduler.py b/scheduler.py index c9c2c1f..a2e1ba6 100644 --- a/scheduler.py +++ b/scheduler.py @@ -3,17 +3,36 @@ import time import subprocess import sys import os +from datetime import datetime def run_sendmsg(): + """执行sendmsg.py脚本""" script_path = os.path.join(os.path.dirname(__file__), 'sendmsg.py') - subprocess.run([sys.executable, script_path]) + try: + print(f"[{datetime.now()}] 开始执行每日消息发送任务...") + result = subprocess.run([sys.executable, script_path], + capture_output=True, text=True, cwd=os.path.dirname(__file__)) + if result.returncode == 0: + print(f"[{datetime.now()}] 任务执行成功") + else: + print(f"[{datetime.now()}] 任务执行失败: {result.stderr}") + except Exception as e: + print(f"[{datetime.now()}] 执行出错: {str(e)}") -# 设置每天12点运行 -schedule.every().day.at("14:39").do(run_sendmsg) +def main(): + """主函数 - 设置定时任务""" + # 每天17:30执行任务 + schedule.every().day.at("17:27").do(run_sendmsg) + + print(f"[{datetime.now()}] 定时任务已启动,将在每天17:30执行sendmsg.py") + print("按Ctrl+C停止程序") + + try: + while True: + schedule.run_pending() + time.sleep(60) # 每分钟检查一次 + except KeyboardInterrupt: + print(f"\n[{datetime.now()}] 定时任务已停止") -print("定时任务已启动,将在每天12:00运行sendmsg.py") - -# 保持程序运行 -while True: - schedule.run_pending() - time.sleep(1) \ No newline at end of file +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/sendmsg.py b/sendmsg.py index 97f7841..9ca155d 100644 --- a/sendmsg.py +++ b/sendmsg.py @@ -6,30 +6,33 @@ import subprocess import json from config import CONFIG import time -from config import CONFIG +def send_daily_message(): + """发送每日消息的主函数""" + today = date.today() + formatted_date = today.strftime('%Y-%m-%d') + file_name = formatted_date + ".png" + file_path = CONFIG['file_path'] + file_name + + try: + wx = WeChat() + except: + subprocess.run([sys.executable, 'send_openmsg.py']) + return False + + msg = 'hello, wxauto!' + who = CONFIG['messages_reciever'] + + if os.path.isfile(file_path): + print("找到了指定文件!") + wx.SendFiles(filepath=file_path, who="File Transfer") + wx.SendMsg(msg=msg, who=who) + return True + else: + print("没找到指定文件") + subprocess.run([sys.executable, 'send_filemsg.py']) + return False -today = date.today() -formatted_date = today.strftime('%Y-%m-%d') -file_name = formatted_date+".png" -file_path = CONFIG['file_path']+file_name -try: - wx = WeChat() -except: - subprocess.run([sys.executable, 'send_openmsg.py']) - sys.exit(1) - - -msg = 'hello, wxauto!' -who = CONFIG['messages_reciever'] - -if os.path.isfile(file_path): - error_msg = "" -else: - error_msg = "没找到指定文件" - subprocess.run([sys.executable, 'send_filemsg.py']) - sys.exit(1) - -print("找到了指定文件!") -wx.SendFiles(filepath=file_path, who="File Transfer") -wx.SendMsg(msg=msg, who=who) +# 如果直接运行此脚本,执行发送消息功能 +if __name__ == "__main__": + send_daily_message() diff --git a/start_scheduler.bat b/start_scheduler.bat deleted file mode 100644 index c42c738..0000000 --- a/start_scheduler.bat +++ /dev/null @@ -1,9 +0,0 @@ -@echo off -:: 查找并停止所有运行 scheduler.py 的 pythonw 进程 -for /f "tokens=2" %%a in ('tasklist /fi "imagename eq pythonw.exe" /v ^| findstr "scheduler.py"') do taskkill /F /PID %%a - -:: 等待1秒确保进程完全停止 -timeout /t 1 /nobreak > nul - -:: 启动新的进程 -start /min pythonw "%~dp0scheduler.py" \ No newline at end of file