4个版本 (2个破坏性更改)
0.3.0 | 2024年4月23日 |
---|---|
0.2.1 | 2023年3月8日 |
0.2.0 | 2022年1月4日 |
0.1.0 | 2021年11月21日 |
#878 在 异步
34KB
417 行
Elegant Departure
Rust crate,用于简化优雅的异步关闭
- 易于使用,API最小化
- 运行时独立(与tokio、async-std、smol等兼容)
- 额外的集成(例如,tokio的Ctrl-C关闭、信号等)
使用方法
此crate位于crates.io上,可以通过将它们添加到项目的Cargo.toml
中的依赖项来使用。
[dependencies]
elegant-departure = "0.3"
对于可选的tokio集成,您需要启用tokio功能
[dependencies]
elegant-departure = { version = "0.3", features = "tokio" }
示例
示例可以在示例目录中找到
- 简单:没有tokio集成的简单示例
- Axum:Axum集成示例
- Tokio:Tokio集成示例
- Hyper:使用Hyper webserver的关闭示例
- Worker:使用
select!
实现的worker示例 - Smol:使用smol运行时的示例
- Async Std:使用async_std运行时的示例
使用tokio集成的小型示例
use std::time::Duration;
async fn worker(name: &'static str) {
let guard = elegant_departure::get_shutdown_guard();
println!("[{}] working", name);
guard.wait().await;
println!("[{}] shutting down", name);
tokio::time::sleep(Duration::from_secs(1)).await;
println!("[{}] done", name);
}
#[tokio::main]
async fn main() {
tokio::spawn(worker("worker 1"));
tokio::spawn(worker("worker 2"));
elegant_departure::tokio::depart()
// Shutdown on Ctrl+C and SIGTERM
.on_termination()
.await
}
依赖项
~3–11MB
~106K SLoC