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 的转换,自动包装任务执行逻辑。
技术细节
任务执行流程
- 从 cron 表达式解析调度时间
- 在指定时间触发任务执行
- 记录任务开始执行日志
- 执行任务逻辑
- 记录任务完成日志和执行耗时
日志格式
- 任务开始:
[task:任务名称] 开始执行 - 任务完成:
[task:任务名称] 执行完成,耗时: Xms
时区支持
所有任务调度均使用 Asia/Shanghai 时区,确保时间准确性。
依赖集成
重新导出了以下 crate:
tokio_cron_scheduler: 核心调度器uuid: UUID 生成器
线程安全
- 使用
Arc确保任务构建器的线程安全 - 使用
OnceCell确保全局调度器的线程安全初始化 - 基于 tokio 异步运行时实现并发安全
许可证
本项目采用 LGPL 许可证。