puniyu_task

Crates.iopuniyu_task
lib.rspuniyu_task
version0.4.1
created_at2025-10-24 16:31:03.811943+00
updated_at2025-11-16 07:32:00.735479+00
descriptionpuniyu 的定时任务模块
homepagehttps://github.com/puniyu/puniyu
repositoryhttps://github.com/puniyu/puniyu
max_upload_size
id1898763
size78,597
wuliya (shiwuliya)

documentation

README

puniyu_task

定时任务管理模块

概述

puniyu_task 是 puniyu 项目中负责定时任务调度和管理的核心库。它基于 tokio-cron-scheduler 实现,提供了任务的创建、调度和执行功能,支持 cron 表达式定时执行任务。

核心组件

Task 结构体

任务包装结构体,包含:

  • plugin_name: 插件名称
  • builder: 任务构建器(Arc<dyn TaskBuilder>

全局调度器

  • SCHEDULER: 使用 OnceCell 实现的全局任务调度器实例
  • init_scheduler: 初始化全局调度器的异步函数

功能特性

任务调度

  • 基于 cron 表达式的定时任务调度
  • 使用 Asia/Shanghai 时区
  • 支持异步任务执行
  • 自动记录任务执行时间和性能指标

任务执行日志

  • 任务开始执行时记录日志
  • 任务执行完成后记录耗时
  • 使用彩色日志输出提升可读性

类型转换

实现了从 Tasktokio_cron_scheduler::Job 的转换,自动包装任务执行逻辑。

技术细节

任务执行流程

  1. 从 cron 表达式解析调度时间
  2. 在指定时间触发任务执行
  3. 记录任务开始执行日志
  4. 执行任务逻辑
  5. 记录任务完成日志和执行耗时

日志格式

  • 任务开始:[task:任务名称] 开始执行
  • 任务完成:[task:任务名称] 执行完成,耗时: Xms

时区支持

所有任务调度均使用 Asia/Shanghai 时区,确保时间准确性。

依赖集成

重新导出了以下 crate:

  • tokio_cron_scheduler: 核心调度器
  • uuid: UUID 生成器

线程安全

  • 使用 Arc 确保任务构建器的线程安全
  • 使用 OnceCell 确保全局调度器的线程安全初始化
  • 基于 tokio 异步运行时实现并发安全

许可证

本项目采用 LGPL 许可证。

Commit count: 314

cargo fmt