From e8ed32019307ee17789f10af85c1dcf67c30ec03 Mon Sep 17 00:00:00 2001 From: panjunlan Date: Sun, 22 Feb 2026 15:44:10 +0800 Subject: [PATCH] =?UTF-8?q?main=20=E7=A8=8B=E5=BA=8F=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E8=B0=83=E5=BA=A6=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 20 ++++++++++---------- main.py | 39 +++++++++++++++++++++++++++++++++------ 2 files changed, 43 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index e906e82..2e9af07 100644 --- a/README.md +++ b/README.md @@ -512,9 +512,9 @@ root 17 11 0 15:15 pts/1 00:00:00 ps -ef ### 修改代码进行临时测试 -- 修改 config.yaml 文件 - - ==snapshot_retention_days: 0== :定义删除多少天前的快照 - - ==schedule==:schedule 自定义改参数下定义的时间 +- 修改 ==config.yaml== 文件 + - `snapshot_retention_days: 0` :定义删除多少天前的快照 + - `schedule`:自定义改参数下的时间 ``` yaml @@ -536,15 +536,15 @@ global: # 定时任务配置 schedule: export: # 导出 Excel 和 Yaml 文件的时间 - day_of_week: 'sat' # 星期几:mon,tue,wed,thu,fri,sat,sun - hour: 6 # 小时 (0-23) - minute: 0 # 分钟 (0-59) + day_of_week: 'sun' # 星期几:mon,tue,wed,thu,fri,sat,sun + hour: 15 # 小时 (0-23) + minute: 35 # 分钟 (0-59) second: 0 # 秒 (可选) delete: # 删除快照的时间 - day_of_week: 'sat' - hour: 19 - minute: 0 + day_of_week: 'sun' + hour: 15 + minute: 40 second: 0 EOF @@ -567,7 +567,7 @@ EOF #### 进入容器测试 -手动执行 ==main.py== 运行 +手动执行 `main.py` 运行 ``` shell [junlan@localhost removeweeklysnapshot]$ sudo docker exec -it removeweeklysnapshot bash diff --git a/main.py b/main.py index cd296ba..0a68e37 100644 --- a/main.py +++ b/main.py @@ -32,22 +32,49 @@ def delete_old_snapshots(): def main(): """主执行函数""" - export_conf = SCHEDULE_EXPORT # 从配置读取导出任务时间 - delete_conf = SCHEDULE_DELETE # 从配置读取删除任务时间 + export_conf = SCHEDULE_EXPORT # 从配置读取导出任务时间 + delete_conf = SCHEDULE_DELETE # 从配置读取删除任务时间 - scheduler = BackgroundScheduler() # 设置定时任务调度器 - scheduler.start() # 开始调度器 + scheduler = BackgroundScheduler() # 创建调度器 - logger.info(f"✓ 导出任务已设置: 每周 {export_conf['day_of_week']} {export_conf['hour']:02d}:{export_conf['minute']:02d}") # :02d 数字格式化选项,用于让数字显示为至少2位,不足补零。 + # 1. 添加导出数据任务 + scheduler.add_job(export_files, # 要执行的函数 + 'cron', # 触发器类型 + day_of_week=export_conf['day_of_week'], + hour=export_conf['hour'], + minute=export_conf['minute'], + second=export_conf.get('second', 0), + id='export_files', # 任务唯一ID + name='导出Excel和YAML' # 任务名称 + ) + logger.info(f"✓ 导出任务已设置: 每周 {export_conf['day_of_week']} {export_conf['hour']:02d}:{export_conf['minute']:02d}") + + # 2. 添加删除任务 + scheduler.add_job( + delete_old_snapshots, # 要执行的函数 + 'cron', + day_of_week=delete_conf['day_of_week'], + hour=delete_conf['hour'], + minute=delete_conf['minute'], + second=delete_conf.get('second', 0), + id='delete_snapshots', + name='删除旧快照' + ) logger.info(f"✓ 删除任务已设置: 每周 {delete_conf['day_of_week']} {delete_conf['hour']:02d}:{delete_conf['minute']:02d}") + # 启动调度器 + scheduler.start() + logger.info("调度器已启动,等待执行任务...") + try: - # 保持主程序运行,以便调度器能正常工作 + # 保持主程序运行 while True: time.sleep(1) except (KeyboardInterrupt, SystemExit): + logger.info("正在关闭调度器...") scheduler.shutdown() + logger.info("调度器已关闭") if __name__ == "__main__":