Add graceful shutdown on SIGTERM (#1014)
* Add graceful shutdown on SIGTERM * Fix linter
This commit is contained in:
parent
9e3fa8b88a
commit
5dc189cf83
1 changed files with 17 additions and 0 deletions
|
@ -8,6 +8,8 @@ use eyre::{Context, Result};
|
|||
|
||||
use crate::settings::Settings;
|
||||
|
||||
use tokio::signal;
|
||||
|
||||
pub mod auth;
|
||||
pub mod calendar;
|
||||
pub mod database;
|
||||
|
@ -17,6 +19,20 @@ pub mod router;
|
|||
pub mod settings;
|
||||
pub mod utils;
|
||||
|
||||
async fn shutdown_signal() {
|
||||
let terminate = async {
|
||||
signal::unix::signal(signal::unix::SignalKind::terminate())
|
||||
.expect("failed to register signal handler")
|
||||
.recv()
|
||||
.await;
|
||||
};
|
||||
|
||||
tokio::select! {
|
||||
_ = terminate => (),
|
||||
}
|
||||
eprintln!("Shutting down gracefully...");
|
||||
}
|
||||
|
||||
pub async fn launch(settings: Settings, host: String, port: u16) -> Result<()> {
|
||||
let host = host.parse::<IpAddr>()?;
|
||||
|
||||
|
@ -28,6 +44,7 @@ pub async fn launch(settings: Settings, host: String, port: u16) -> Result<()> {
|
|||
|
||||
Server::bind(&SocketAddr::new(host, port))
|
||||
.serve(r.into_make_service())
|
||||
.with_graceful_shutdown(shutdown_signal())
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
|
|
Loading…
Reference in a new issue