Spaces:
Running
Running
| use axum::{ | |
| body::Body, | |
| http::{Request, Response}, | |
| middleware::{self, Next}, | |
| routing::get, | |
| Router, | |
| }; | |
| use std::time::Instant; | |
| async fn track_time(req: Request<Body>, next: Next) -> Response<Body> { | |
| let start = Instant::now(); | |
| let response = next.run(req).await; | |
| let latency = start.elapsed().as_micros(); // Microseconds for precision | |
| let mut response = response; | |
| response.headers_mut().insert( | |
| "x-process-time-us", | |
| latency.to_string().parse().unwrap(), | |
| ); | |
| response | |
| } | |
| async fn main() { | |
| let app = Router::new() | |
| .route("/", get(|| async { "Fastest code on HF" })) | |
| .layer(middleware::from_fn(track_time)); // Wrap everything in the timer | |
| let listener = tokio::net::TcpListener::bind("0.0.0.0:7860").await.unwrap(); | |
| axum::serve(listener, app).await.unwrap(); | |
| } |