Available on crate feature
timeout
only.Expand description
Middleware that applies a timeout to requests.
If the request does not complete within the specified timeout it will be aborted and a 408 Request Timeout
response will be sent.
§Differences from tower::timeout
tower’s Timeout
middleware uses an error to signal timeout, i.e.
it changes the error type to BoxError
. For HTTP services that is rarely
what you want as returning errors will terminate the connection without sending a response.
This middleware won’t change the error type and instead return a 408 Request Timeout
response. That means if your service’s error type is Infallible
it will still be
Infallible
after applying this middleware.
§Example
use http::{Request, Response};
use http_body_util::Full;
use bytes::Bytes;
use std::{convert::Infallible, time::Duration};
use tower::ServiceBuilder;
use tower_http::timeout::TimeoutLayer;
async fn handle(_: Request<Full<Bytes>>) -> Result<Response<Full<Bytes>>, Infallible> {
// ...
}
let svc = ServiceBuilder::new()
// Timeout requests after 30 seconds
.layer(TimeoutLayer::new(Duration::from_secs(30)))
.service_fn(handle);
Structs§
- Applies a
TimeoutBody
to the request body. - Applies a
TimeoutBody
to the request body. - Applies a
TimeoutBody
to the response body. - Applies a
TimeoutBody
to the response body. - Middleware which apply a timeout to requests.
- Middleware that applies a timeout to request and response bodies.
- Error for
TimeoutBody
. - Layer that applies the
Timeout
middleware which apply a timeout to requests.