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