# timed_task **Repository Path**: bluetune/timed_task ## Basic Information - **Project Name**: timed_task - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-01 - **Last Updated**: 2026-07-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Webank 任务调度管理系统 ## 项目简介 Webank 是一个基于 Flask 和 APScheduler 的 Web 任务调度管理系统,支持多种任务调度策略,包括永久循环任务、周策略任务和时间点任务。该系统提供了直观的 Web 界面用于管理和监控各种类型的定时任务,能够满足不同场景下的任务调度需求。 ## 功能特性 ### 核心功能 - **多种任务调度策略**: - 永久循环任务(Permanent):按设定的时间间隔持续执行 - 周策略任务(Weekly):在每周指定的天和时间执行 - 时间点任务(DateTime):在指定的具体时间点执行一次 - **Web 管理界面**: - 直观的任务管理和监控界面 - 可视化任务管理 - 支持创建、编辑、删除任务 - 支持启用/停用任务 - 现代化UI设计,响应式设计适配不同设备 - 友好的消息提示系统 - 删除操作确认机制 - **任务状态管理**:可激活/停用任务 - **实时任务监控**:显示任务执行状态 - **自定义任务函数**:支持扩展自定义任务处理逻辑 ### 技术架构 - **后端技术栈**: - **Flask**: 轻量级 Web 框架 - **APScheduler**: 强大的任务调度库 - **JSON文件存储**: 轻量级数据存储方案 - **前端技术栈**: - **Bootstrap 5**: 响应式 UI 框架 - **Axios**: HTTP 客户端 - **Vanilla JavaScript**: 原生 JavaScript 实现交互逻辑 ## 项目结构 ``` webank/ ├── app/ # 应用主目录 │ ├── static/ # 静态资源文件 │ │ ├── css/ # 样式文件 │ │ └── js/ # JavaScript 文件 │ ├── templates/ # HTML 模板文件 │ ├── __init__.py # 应用初始化 │ ├── config.py # 配置文件 │ ├── executor.py # 任务执行器 │ ├── json_storage.py # JSON数据存储 │ ├── models.py # 数据模型 │ ├── routes.py # 路由定义 │ └── scheduler.py # 调度器 ├── instance/ # JSON数据文件 ├── requirements.txt # 项目依赖 ├── run.py # 应用入口 └── README_COMBINED.md # 合并后的说明文档 ``` ## 安装与运行 ### 环境要求 - Python 3.8+ - pip 包管理器 ### 安装步骤 1. 克隆或下载项目代码 2. 进入项目根目录 3. 安装依赖包: ```bash pip install -r requirements.txt ``` ### 运行应用 ```bash python run.py ``` 应用将在 `http://localhost:5000` 启动。 ## 使用说明 ### 访问管理界面 在浏览器中打开 `http://localhost:5000` 即可访问任务管理界面。 ### 创建任务 1. 点击"新增任务"按钮 2. 填写任务基本信息: - 任务名称:任务的标识名称 - 描述:任务的详细描述 - 任务类型:选择任务执行策略 - Permanent(永久循环):需要设置执行间隔(秒) - Weekly(周策略):需要设置星期几(0-6,0为周日)和开始时间(HH:MM) - DateTime(时间点):需要设置具体执行时间(YYYY-MM-DDTHH:MM:SS) - 函数名:要执行的函数名称 - 是否激活:任务创建后是否立即激活 3. 根据任务类型配置详细参数 4. 设置任务状态(启用/停用) 5. 点击"保存"完成创建 ### 管理任务 - **查看任务列表**:主界面显示所有已创建的任务 - **编辑任务**:点击任务行的编辑按钮 - **启用/停用任务**:点击任务行的播放/暂停按钮 - **删除任务**:点击任务行的删除按钮,系统会显示确认提示,确认后才会删除任务 - **切换状态**:点击任务行上的切换按钮激活/停用任务 ### 自定义任务函数 在 `app/custom_tasks.py` 文件中可以定义自己的任务函数。每个函数应该接受一个参数(任务配置),并实现相应的业务逻辑。 示例函数格式: ```python def my_task_function(task): # task参数是Task对象,包含任务的所有信息 # 执行具体任务逻辑 return {"status": "success", "message": "Task completed"} ``` 示例: ```python def sample_task_1(config): """示例任务函数""" print(f"执行任务: {config.get('name', '未知任务')}") # 实现具体的业务逻辑 ``` 在Web界面中创建任务时,执行函数字段填写 `app.custom_tasks:my_task_function` 即可。 ## API 接口 ### 获取所有任务 ``` GET /api/tasks ``` ### 创建任务 ``` POST /api/tasks Content-Type: application/json { "name": "任务名称", "description": "任务描述", "task_type": "permanent|weekly|datetime", "function_name": "函数名", "is_active": true|false, "config": { // 根据任务类型配置相应参数 } } ``` ### 获取单个任务 ``` GET /api/tasks/ ``` ### 更新任务 ``` PUT /api/tasks/ Content-Type: application/json { "name": "任务名称", "description": "任务描述", "task_type": "permanent|weekly|datetime", "function_name": "函数名", "is_active": true|false, "config": { // 根据任务类型配置相应参数 } } ``` ### 删除任务 ``` DELETE /api/tasks/ ``` ### 切换任务状态 ``` POST /api/tasks//toggle ``` 或 ``` PATCH /api/tasks//toggle ``` ## 关键技术实现细节 ### 1. 任务调度器设计 - 使用 APScheduler 的 BackgroundScheduler 实现后台任务调度 - 支持多种触发器类型:IntervalTrigger、CronTrigger、DateTrigger - 任务状态管理,支持动态添加、修改、删除任务 ### 2. 数据模型设计 - 任务模型包含名称、描述、类型、配置、状态等字段 - 配置字段使用 JSON 格式存储,支持灵活的任务参数配置 - 自动时间戳记录任务创建和更新时间 - 使用JSON文件持久化存储,避免了数据库依赖 ### 3. API 接口设计 - 遵循 RESTful 设计原则 - 统一的 JSON 响应格式 - 完善的错误处理机制 ### 4. 前端交互设计 - 模态框实现任务创建和编辑功能 - 动态表格展示任务列表 - 实时状态更新和反馈 - 消息提示系统替代传统弹窗,提供更好的用户体验 - 删除操作确认机制,防止误删重要任务 ## 项目亮点 1. **灵活的任务配置** 系统支持三种不同的任务类型,每种类型都有相应的配置参数,能够满足大多数任务调度场景的需求。 2. **直观的用户界面** 采用 Bootstrap 5 设计的响应式界面,在不同设备上都能提供良好的用户体验。 3. **完整的 API 支持** 提供完整的 RESTful API 接口,方便与其他系统集成。 4. **友好的交互体验** - 消息提示系统替代传统弹窗,提供更好的用户体验 - 删除操作确认机制,防止误删重要任务 5. **易于扩展** 通过自定义任务函数的方式,可以轻松扩展系统功能,实现各种业务需求。 ## 使用场景 1. **定时数据备份**: 设置永久循环任务定期备份重要数据 2. **报表生成与发送**: 设置周策略任务在指定时间生成并发送报表 3. **系统维护**: 设置时间点任务在特定时间执行系统维护操作 4. **数据同步**: 设置定时任务同步不同系统间的数据 ## 部署与维护 ### 部署建议 1. 生产环境建议使用专业的 WSGI 服务器(如 Gunicorn) 2. 使用 Nginx 作为反向代理服务器 3. 配置 SSL 证书确保数据传输安全 4. 定期备份JSON数据文件 ### 维护建议 1. 定期检查任务执行日志 2. 监控系统资源使用情况 3. 及时更新依赖包版本 4. 备份重要任务配置 ## 注意事项 1. 系统使用 JSON 文件存储任务数据,默认存储在 `instance/tasks.json` 文件中 2. 任务函数必须在 `custom_tasks.py` 中定义,否则无法执行 3. 修改任务调度配置后,需要重启应用才能生效 4. 任务调度器在应用启动时自动初始化 5. 任务配置以JSON格式存储在文件中 6. 支持动态导入和执行自定义函数 7. 任务执行日志通过Python logging模块记录 8. 系统默认监听所有网络接口(0.0.0.0),生产环境中请注意网络安全配置 ## 未来改进方向 1. **用户权限管理**: 添加用户认证和权限控制功能 2. **任务执行历史**: 记录任务执行历史和结果 3. **通知机制**: 添加邮件、短信等通知功能 4. **集群支持**: 支持分布式部署和任务调度 5. **任务依赖**: 支持任务间的依赖关系管理 ## 总结 Webank 任务调度管理系统实现了完整的任务调度功能,提供了友好的 Web 界面和强大的 API 接口。通过合理的架构设计和技术选型,系统具有良好的可扩展性和维护性,能够满足大多数任务调度场景的需求。无论是用于学习 Flask 和 APScheduler 的开发实践,还是作为实际项目中的任务调度工具,Webank 都是一个优秀的解决方案。