Skip to main content

Module shutdown

Module shutdown 

Source
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§

GracefulShutdown
Graceful shutdown handler
GracefulShutdownBuilder
Builder for configuring graceful shutdown
ShutdownAwareTaskSpawner
Shutdown-aware task spawner
ShutdownGuard
Shutdown guard that triggers shutdown when dropped
ShutdownToken
A token that can be used to check if shutdown has been requested

Enums§

ShutdownSignal
Shutdown signal types

Traits§

GracefulShutdownExt
Extension trait for GracefulShutdown providing additional cleanup functionality
ShutdownExt
Extension trait for futures that adds shutdown awareness