# puniyu_task
定时任务管理模块
## 概述
`puniyu_task` 是 puniyu 项目中负责定时任务调度和管理的核心库。它基于 `tokio-cron-scheduler` 实现,提供了任务的创建、调度和执行功能,支持
cron 表达式定时执行任务。
## 核心组件
### Task 结构体
任务包装结构体,包含:
- `plugin_name`: 插件名称
- `builder`: 任务构建器(`Arc<dyn TaskBuilder>`)
### 全局调度器
- `SCHEDULER`: 使用 `OnceCell` 实现的全局任务调度器实例
- `init_scheduler`: 初始化全局调度器的异步函数
## 功能特性
### 任务调度
- 基于 cron 表达式的定时任务调度
- 使用 `Asia/Shanghai` 时区
- 支持异步任务执行
- 自动记录任务执行时间和性能指标
### 任务执行日志
- 任务开始执行时记录日志
- 任务执行完成后记录耗时
- 使用彩色日志输出提升可读性
### 类型转换
实现了从 `Task` 到 `tokio_cron_scheduler::Job` 的转换,自动包装任务执行逻辑。
## 技术细节
### 任务执行流程
1. 从 cron 表达式解析调度时间
2. 在指定时间触发任务执行
3. 记录任务开始执行日志
4. 执行任务逻辑
5. 记录任务完成日志和执行耗时
### 日志格式
- 任务开始:`[task:任务名称] 开始执行`
- 任务完成:`[task:任务名称] 执行完成,耗时: Xms`
### 时区支持
所有任务调度均使用 `Asia/Shanghai` 时区,确保时间准确性。
## 依赖集成
重新导出了以下 crate:
- `tokio_cron_scheduler`: 核心调度器
- `uuid`: UUID 生成器
## 线程安全
- 使用 `Arc` 确保任务构建器的线程安全
- 使用 `OnceCell` 确保全局调度器的线程安全初始化
- 基于 tokio 异步运行时实现并发安全
## 许可证
本项目采用 [LGPL](../../LICENSE) 许可证。