1 个不稳定版本
0.0.1 | 2020年10月4日 |
---|
#40 in #触发器
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.0 或 MIT 许可协议。除非您明确表示,否则根据 Apache-2.0 许可协议定义的,您有意提交以包含在此包中的任何贡献,均应按照上述方式双重许可,不附加任何其他条款或条件。
依赖项
~21–33MB
~525K SLoC