zero4rs 2.0.0

zero4rs is a powerful, pragmatic, and extremely fast web framework for Rust
Documentation
pub mod issue_delivery_worker;

pub use issue_delivery_worker::*;

use std::collections::HashMap;
use std::str::FromStr;

use strum_macros::EnumString;

#[derive(Debug, EnumString)]
pub enum TaskNames {
    Task1,
    Task2,
    GetIp,
}

pub fn task1() {
    log::info!("task1");
}

pub fn task2() {
    log::info!("task2");
}

pub fn getip() {
    // 创建一个线程池,使用默认配置(通常会创建与 CPU 核心数量相等的线程)
    // let pool = rayon::ThreadPoolBuilder::new().build().unwrap();

    // 创建一个异步块,并在其中调用异步函数
    tokio::runtime::Runtime::new().unwrap().block_on(async {
        let resp = reqwest::get("https://httpbin.org/ip")
            .await
            .unwrap()
            .json::<HashMap<String, String>>()
            .await
            .unwrap();

        log::info!("ip={:?}", resp);
    });
}

//               	sec    min   hour          day of month    month       day of week     year
// let expression = "0     30    9,12,15       1,15            May-Aug     Mon,Wed,Fri     2018/2";
// let expression = "0/2   *     *             *               *           *               *";
pub async fn execute_task(function_name: &str, expression: &str) {
    if let Ok(function_enum) = TaskNames::from_str(function_name) {
        match function_enum {
            TaskNames::Task1 => {
                crate::core::looop::running(expression, 100, task1).await;
            }
            TaskNames::Task2 => {
                crate::core::looop::running(expression, 100, task2).await;
            }
            TaskNames::GetIp => {
                crate::core::looop::running(expression, 100, getip).await;
            }
        }
    }
}