# sync-script-manager **Repository Path**: xiaochangming/sync-script-manager ## Basic Information - **Project Name**: sync-script-manager - **Description**: 一个使用ai构建的同步脚本管理系统 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-28 - **Last Updated**: 2026-03-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 同步脚本管理系统 ## 项目简介 同步脚本管理系统是一个用于管理和执行脚本的工具,支持脚本依赖处理、批量执行、定时执行等功能。该系统可以帮助用户更有效地管理和执行各种脚本任务。 ## 功能特性 - **脚本管理**:自动发现和管理脚本文件 - **依赖处理**:智能解析和处理脚本间的依赖关系 - **批量执行**:支持对多个项目批量执行同一脚本 - **定时执行**:支持脚本的定时执行功能 - **结果管理**:统一管理脚本执行结果 - **续执行**:支持从指定脚本开始续执行 - **执行状态管理**:记录和管理脚本执行状态 ## 项目结构 ``` sync-script-manager/ ├── src/ # 源代码目录 │ ├── utils/ # 工具类 │ ├── script_manager.py # 脚本管理模块 │ ├── dependency_handler.py # 依赖处理模块 │ ├── execution_engine.py # 执行引擎 │ ├── result_manager.py # 结果管理模块 │ └── scheduled_executor.py # 定时执行器 ├── scripts/ # 脚本目录 ├── logs/ # 日志目录 ├── results/ # 结果目录 ├── main.py # 主入口文件 ├── config.py # 配置文件 ├── requirements.txt # 依赖文件 └── .gitignore # Git忽略文件 ``` ## 安装说明 1. 克隆项目到本地: ```bash git clone <项目地址> cd sync-script-manager ``` 2. 安装依赖: ```bash pip install -r requirements.txt ``` ## 使用说明 ### 基本用法 1. 执行所有脚本: ```bash python main.py ``` 2. 执行指定脚本: ```bash python main.py --scripts script1.py script2.py ``` 3. 批量执行模式: ```bash python main.py --batch --scripts script.py --items item1 item2 item3 ``` 4. 从指定脚本开始续执行: ```bash python main.py --resume script_name ``` 5. 不保存执行结果: ```bash python main.py --no-save ``` 6. 启动定时执行器: ```bash python main.py --scheduled ``` ### 命令行参数说明 | 参数 | 描述 | |------|------| | `--scripts` | 要执行的脚本列表 | | `--batch` | 启用批量执行模式 | | `--items` | 批量执行的项目列表 | | `--resume` | 从哪个脚本开始续执行 | | `--no-save` | 不保存执行结果 | | `--scheduled` | 启动定时执行器 | ## 配置说明 配置文件位于 `config.py`,主要配置项包括: - `PROJECT_ROOT`:项目根目录 - `SCRIPTS_DIR`:脚本目录 - `RESULTS_DIR`:结果目录 - `LOGS_DIR`:日志目录 - `LOG_LEVEL`:日志级别 - `SAVE_RESULTS`:是否保存结果 - `RESUME_FROM`:从哪个脚本开始续执行 - `SCRIPT_NAME_PATTERN`:脚本命名规则正则表达式 - `SCHEDULED_EXECUTOR_MAX_WORKERS`:定时执行器线程池最大线程数 - `SCHEDULED_EXECUTOR_SCAN_INTERVAL`:定时执行器扫描间隔(秒) ## 脚本编写规范 1. 脚本文件命名规则:`prefix_name_version.py`,例如 `base_script_1.0.py` 2. 脚本应实现以下函数: - `run(tools)`:脚本执行函数,接收工具集参数 - `get_dependencies()`:获取脚本依赖列表 - `get_metadata()`:获取脚本元数据,包括名称、版本、描述等 - `get_view(tools)`:获取批量执行的视图数据(可选) - `batch_end(tools)`:批量执行结束时的回调函数(可选) ## 示例脚本 ### 基础脚本示例 ```python """基础脚本示例""" import pandas as pd def run(tools): """执行脚本逻辑""" logger = tools.get("logger") logger.info("Executing base script") # 生成示例数据 data = { "name": ["Alice", "Bob", "Charlie"], "age": [25, 30, 35], "city": ["New York", "London", "Paris"] } df = pd.DataFrame(data) logger.info(f"Base script generated DataFrame with {len(df)} rows") return df def get_dependencies(): """获取脚本依赖""" return [] # 无依赖 def get_metadata(): """获取脚本元数据""" return { "name": "base_script", "version": "1.0", "description": "基础脚本示例", "author": "user", "crontab": "0 0 * * *" # 每天凌晨执行 } def get_view(tools): """获取视图数据(批量执行时使用) Args: tools: 工具集 Returns: pandas.DataFrame: 视图数据 """ logger = tools.get("logger") logger.info("Executing get_view function") # 生成测试数据 import pandas as pd data = { "name": ["Alice", "Bob", "Charlie"], "age": [25, 30, 35], "city": ["New York", "London", "Paris"] } df = pd.DataFrame(data) logger.info(f"View generated DataFrame with {len(df)} rows") return df def batch_end(tools): """批量执行结束时调用的函数 Args: tools: 工具集 """ logger = tools.get("logger") logger.info("Executing batch_end function") logger.info("Batch execution completed") # 这里可以执行清理、汇总或其他收尾工作 return None ``` ### 依赖脚本示例 ```python """依赖脚本示例""" import pandas as pd def run(tools): """执行脚本逻辑""" logger = tools.get("logger") logger.info("Executing dependent script") # 生成示例数据 data = { "product": ["A", "B", "C"], "price": [100, 200, 300], "quantity": [10, 20, 30] } df = pd.DataFrame(data) logger.info(f"Dependent script generated DataFrame with {len(df)} rows") return df def get_dependencies(): """获取脚本依赖""" return ["base_script_1.0.py"] # 依赖基础脚本 def get_metadata(): """获取脚本元数据""" return { "name": "dependent_script", "version": "1.0", "description": "依赖基础脚本的示例", "author": "user", "crontab": "0 1 * * *" # 每天凌晨1点执行 } ``` ## 注意事项 1. 脚本文件必须遵循命名规则 2. 脚本依赖关系不能形成循环依赖 3. 批量执行模式下,脚本可以实现 `get_view` 函数来获取批量执行的视图数据 4. 定时执行功能需要脚本在 `get_metadata` 函数中定义 `crontab` 字段 5. 执行结果将保存在 `results` 目录下 6. 执行日志将保存在 `logs` 目录下 ## 测试 项目包含多个测试文件,用于测试不同功能: - `test_auto_batch_execution.py`:测试自动批量执行 - `test_batch_end_function.py`:测试批量执行结束函数 - `test_batch_end_interrupt.py`:测试批量执行中断 - `test_batch_execution.py`:测试批量执行 - `test_metadata_update.py`:测试元数据更新 - `test_scheduled_execution.py`:测试定时执行 运行测试: ```bash python -m pytest ```