Upgrading axum=0.7

This commit is contained in:
Nicolas Patry 2024-02-02 12:15:32 +01:00
parent b7ffa287f2
commit 26d3519ff2
3 changed files with 484 additions and 329 deletions

726
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -16,8 +16,8 @@ path = "src/main.rs"
[dependencies] [dependencies]
async-stream = "0.3.5" async-stream = "0.3.5"
axum = { version = "0.6.20", features = ["json"] } axum = { version = "0.7.4", features = ["json"] }
axum-tracing-opentelemetry = "0.14.1" axum-tracing-opentelemetry = "0.16"
text-generation-client = { path = "client" } text-generation-client = { path = "client" }
clap = { version = "4.4.5", features = ["derive", "env"] } clap = { version = "4.4.5", features = ["derive", "env"] }
futures = "0.3.28" futures = "0.3.28"
@ -36,12 +36,12 @@ thiserror = "1.0.48"
tokenizers = { workspace = true} tokenizers = { workspace = true}
tokio = { version = "1.32.0", features = ["rt", "rt-multi-thread", "parking_lot", "signal", "sync"] } tokio = { version = "1.32.0", features = ["rt", "rt-multi-thread", "parking_lot", "signal", "sync"] }
tokio-stream = "0.1.14" tokio-stream = "0.1.14"
tower-http = { version = "0.4.4", features = ["cors"] } tower-http = { version = "0.5.1", features = ["cors"] }
tracing = "0.1.37" tracing = "0.1.37"
tracing-opentelemetry = "0.21.0" tracing-opentelemetry = "0.21.0"
tracing-subscriber = { version = "0.3.17", features = ["json", "env-filter"] } tracing-subscriber = { version = "0.3.17", features = ["json", "env-filter"] }
utoipa = { version = "3.5.0", features = ["axum_extras"] } utoipa = { version = "4.2.0", features = ["axum_extras"] }
utoipa-swagger-ui = { version = "3.1.5", features = ["axum"] } utoipa-swagger-ui = { version = "6.0.0", features = ["axum"] }
ngrok = { version = "0.13.1", features = ["axum"], optional = true } ngrok = { version = "0.13.1", features = ["axum"], optional = true }
init-tracing-opentelemetry = { version = "0.14.1", features = ["opentelemetry-otlp"] } init-tracing-opentelemetry = { version = "0.14.1", features = ["opentelemetry-otlp"] }
minijinja = { git = "https://github.com/mitsuhiko/minijinja.git", rev = "5cd4efb" } minijinja = { git = "https://github.com/mitsuhiko/minijinja.git", rev = "5cd4efb" }

View File

@ -1666,46 +1666,47 @@ pub async fn run(
if ngrok { if ngrok {
#[cfg(feature = "ngrok")] #[cfg(feature = "ngrok")]
{ {
use ngrok::config::TunnelBuilder; // use ngrok::config::TunnelBuilder;
let _ = addr; // let _ = addr;
let authtoken = // let authtoken =
ngrok_authtoken.expect("`ngrok-authtoken` must be set when using ngrok tunneling"); // ngrok_authtoken.expect("`ngrok-authtoken` must be set when using ngrok tunneling");
let edge = ngrok_edge.expect("`ngrok-edge` must be set when using ngrok tunneling"); // let edge = ngrok_edge.expect("`ngrok-edge` must be set when using ngrok tunneling");
let tunnel = ngrok::Session::builder() // let tunnel = ngrok::Session::builder()
.authtoken(authtoken) // .authtoken(authtoken)
.connect() // .connect()
.await // .await
.unwrap() // .unwrap()
.labeled_tunnel() // .labeled_tunnel()
.label("edge", edge); // .label("edge", edge);
let listener = tunnel.listen().await.unwrap(); // let listener = tunnel.listen().await.unwrap();
// let router = Router::new()
// .route("/health", get(health))
// .route("/metrics", get(metrics))
// .layer(Extension(health_ext))
// .layer(Extension(prom_handle))
// .into_make_service();
// Run prom metrics and health locally too // // Run prom metrics and health locally too
tokio::spawn( // let tokio_listener = tokio::net::TcpListener::bind(&addr).await.unwrap();
axum::Server::bind(&addr) // axum::serve(tokio_listener, router)
.serve( // .with_graceful_shutdown(shutdown_signal())
Router::new() // .await?;
.route("/health", get(health))
.route("/metrics", get(metrics)) // axum::serve(listener, app)
.layer(Extension(health_ext)) // .with_graceful_shutdown(shutdown_signal())
.layer(Extension(prom_handle)) // .await?;
.into_make_service(),
)
//Wait until all requests are finished to shut down
.with_graceful_shutdown(shutdown_signal()),
);
// Run server // Run server
axum::Server::builder(listener) // axum::Server::builder(listener)
.serve(app.into_make_service()) // .serve(app.into_make_service())
//Wait until all requests are finished to shut down // //Wait until all requests are finished to shut down
.with_graceful_shutdown(shutdown_signal()) // .with_graceful_shutdown(shutdown_signal())
.await?; // .await?;
} }
#[cfg(not(feature = "ngrok"))] #[cfg(not(feature = "ngrok"))]
{ {
@ -1718,11 +1719,17 @@ pub async fn run(
} }
} else { } else {
// Run server // Run server
axum::Server::bind(&addr)
.serve(app.into_make_service()) let listener = tokio::net::TcpListener::bind(&addr).await.unwrap();
// Wait until all requests are finished to shut down axum::serve(listener, app)
.with_graceful_shutdown(shutdown_signal()) .with_graceful_shutdown(shutdown_signal())
.await?; .await?;
// axum::Server::bind(&addr)
// .serve(app.into_make_service())
// // Wait until all requests are finished to shut down
// .with_graceful_shutdown(shutdown_signal())
// .await?;
} }
Ok(()) Ok(())
} }