Expand description
Graceful shutdown utilities for production services.
Handle SIGTERM/SIGINT signals and coordinate clean shutdown across tasks.
§Example
ⓘ
use allframe::shutdown::{ShutdownSignal, GracefulShutdownExt};
let signal = ShutdownSignal::new();
// In your main loop
tokio::select! {
_ = server.run() => {},
_ = signal.recv() => {
server.perform_shutdown().await;
}
}Graceful shutdown utilities
This module provides utilities for handling graceful shutdown of services, including signal handling, timeout management, and task cancellation.
§Example
use allframe_core::shutdown::{GracefulShutdown, ShutdownSignal};
use std::time::Duration;
#[tokio::main]
async fn main() {
let shutdown = GracefulShutdown::new();
// Spawn a task that will be cancelled on shutdown
let mut token = shutdown.token();
tokio::spawn(async move {
loop {
tokio::select! {
_ = token.cancelled() => {
println!("Task cancelled");
break;
}
_ = tokio::time::sleep(Duration::from_secs(1)) => {
println!("Working...");
}
}
}
});
// Wait for shutdown signal
shutdown.wait().await;
}Structs§
- Graceful
Shutdown - Graceful shutdown handler
- Graceful
Shutdown Builder - Builder for configuring graceful shutdown
- Shutdown
Aware Task Spawner - Shutdown-aware task spawner
- Shutdown
Guard - Shutdown guard that triggers shutdown when dropped
- Shutdown
Token - A token that can be used to check if shutdown has been requested
Enums§
- Shutdown
Signal - Shutdown signal types
Traits§
- Graceful
Shutdown Ext - Extension trait for
GracefulShutdownproviding additional cleanup functionality - Shutdown
Ext - Extension trait for futures that adds shutdown awareness