scheduled_task/
lib.rs

1//! 通过`#[scheduled]`属性宏生成定时任务
2//!
3//! `#[scheduled]`有两个属性
4//! + cron:指定表达式, 如:cron = "*/1 * * * * *"
5//! + rate:指定时间频率,单位:秒
6//!
7//! > 注意: cron和rate两者必须且只能有一个有值
8//!
9//! `#[scheduled]`必须添加在一个无参数、无返回值的异步函数上
10//! 然后需要执行一下该函数,定时任务才能生效
11//!
12//! # Example
13//! ```
14//! #[scheduled(cron = "*/1 * * * * *")]
15//! async fn func1() {
16//!     println!("func1");
17//! }
18//!
19//! #[tokio::main]
20//! async fn main() {
21//!     run_cron_task!(func1);
22//!     // 或
23//!     // func1().await;
24//! }
25//! ```
26
27/// 运行添加了#[scheduled]属性的方法
28///
29/// #Example
30/// ```
31/// #[scheduled(cron = "*/1 * * * * *")]
32/// async fn func1() {
33///     println!("func1");
34/// }
35///
36/// #[tokio::main]
37/// async fn main() {
38///     run_cron_task!(func1);
39/// }
40/// ```
41#[macro_export]
42macro_rules! run_cron_task {
43    ($($var:ident),+ $(,)?) => {
44        $($var().await;)+
45    };
46}
47
48pub type Job = tokio_cron_scheduler::Job;
49pub type JobScheduler = tokio_cron_scheduler::JobScheduler;
50pub use scheduled_task_macro::*;