1 个不稳定版本

0.0.1 2020年10月4日

#40 in #触发器

MIT 许可协议

370KB
1.5K SLoC

horoscope

高级 Rust 调度器


这个包提供了一个通用调度器。horoscope 调度器提供开箱即用的功能,并且易于扩展。

特性

  • 快速:horoscope 比 其他主流语言构建的调度器运行速度快得多。
  • 并发:执行器在自己的任务中运行工作,以便尽可能快地完成尽可能多的工作。
  • 直观:您可以直接使用 CRON、网络任务、从内存中检索工作、pg 和 redis 等功能。如果它们不符合您的需求,您也可以自己实现工作、触发器、存储或执行器。
  • 易于学习: 详细文档

示例

use horoscope::executor::Executor;
use horoscope::job::network::{Job, NetType};
use horoscope::scheduler::{Schedule, blocking, daemon, Msg};
use horoscope::store::memory::Store;

fn main() {
    let store = Store::new(String::from("jobStore-test"));
    let exec = Executor::new(String::from("executor-test"));
    let njob = Job::new(
        String::from("job-1"),
        String::from("https://ping.me/"),
        NetType::Get,
        None,
    );

    let mut blk_scheduler = blocking::Scheduler::new();
    blk_scheduler
        .add_store(String::from("jobStore-test"), Box::new(store))
        .unwrap();
    blk_scheduler
        .add_executor(String::from("executor-test"), exec)
        .unwrap();

    let scheduler = daemon(blk_scheduler);

    scheduler
        .send(Msg::AddJob(
            String::from("job-1"),
            String::from("jobStore-test"),
            String::from("executor-test"),
            start_time,
            None,
            Box::new(njob),
        ))
        .await;
}

更多示例,包括网络和文件访问,可以在我们的 examples 目录和我们的 文档 中找到。

理念

我们相信,对于常见的用例,有通用的实现是很有帮助的,但始终允许您根据自己的喜好进行实现。

安装

安装 cargo add 后运行

$ cargo add horoscope

许可协议

根据您的选择,许可协议为 Apache 许可协议,版本 2.0MIT 许可协议
除非您明确表示,否则根据 Apache-2.0 许可协议定义的,您有意提交以包含在此包中的任何贡献,均应按照上述方式双重许可,不附加任何其他条款或条件。

依赖项

~21–33MB
~525K SLoC