diff --git a/examples/graceful_shutdown/Cargo.toml b/examples/graceful_shutdown/Cargo.toml new file mode 100644 index 00000000..ddb9a4d2 --- /dev/null +++ b/examples/graceful_shutdown/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "example-graceful-shutdown" +version = "0.1.0" +edition = "2018" +publish = false + +[dependencies] +axum = { path = "../.." } +tokio = { version = "1.0", features = ["full"] } diff --git a/examples/graceful_shutdown/src/main.rs b/examples/graceful_shutdown/src/main.rs new file mode 100644 index 00000000..efdb7a15 --- /dev/null +++ b/examples/graceful_shutdown/src/main.rs @@ -0,0 +1,55 @@ +//! Run with +//! +//! ```not_rust +//! cargo run -p example-graceful-shutdown +//! kill or ctrl-c +//! ``` + +use axum::{handler::get, response::Html, Router}; +use std::net::SocketAddr; + +#[tokio::main] +async fn main() { + // build our application with a route + let app = Router::new().route("/", get(handler)); + + // run it + let addr = SocketAddr::from(([127, 0, 0, 1], 3000)); + println!("listening on {}", addr); + axum::Server::bind(&addr) + .serve(app.into_make_service()) + .with_graceful_shutdown(shutdown_signal()) + .await + .unwrap(); +} + +async fn handler() -> Html<&'static str> { + Html("