summaryrefslogtreecommitdiffstats
path: root/crates/sellershut/src/server/middleware/timeout.rs
blob: ff39c6a2e9fd9ba7d70754c1d6a93cfea2745401 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
use std::time::Duration;

use axum::Router;
use tower_http::{timeout::TimeoutLayer, trace::TraceLayer};
use tracing::trace;

pub fn apply(router: Router, duration: u64) -> Router {
    trace!(seconds = duration, "applying timeout middleware");
    router.layer((
        TraceLayer::new_for_http(),
        // Graceful shutdown will wait for outstanding requests to complete. Add a timeout so
        // requests don't hang forever.
        TimeoutLayer::new(Duration::from_secs(duration)),
    ))
}