#service-request #tokio #time #how #long #response #reply

tokio-timeit-middleware

Time how long it takes your Tokio Service to send a Service::Response in reply to a Service::Request

1 unstable release

Uses old Rust 2015

0.1.0 Apr 6, 2017

#9 in #reply

Apache-2.0/MIT

7KB
120 lines

tokio-timeit-middleware

Time how long it takes your Tokio Service to send a Service::Response in reply to a Service::Request.

Usage

First, add this to your Cargo.toml:

[dependencies]
tokio-timeit-middleware = { git = "https://github.com/fitzgen/tokio-timeit-middleware" }

Next, add this to your crate:

extern crate tokio_timeit_middleware;

To time your Tokio Service's request/response times, wrap it in tokio_timeit_middleware::Timeit:

let timed_service = Timeit::new(my_tokio_service, Rc::new(|duration| {
    println!("Responded to request in {}", duration);
));

lib.rs:

tokio-timeit-middleware provides a middleware Tokio Service called Timeit to time how long it takes to reply to a Service::Request with a Service::Response.

The recorded timings are sent to a TimeSink which may be any smart pointer type that Derefs to a function that takes a time::Duration and is Clone.

Example

// Send recorded timings to metrics or logging or whatever...
let time_sink = Rc::new(|timing: time::Duration| {
    println!("Replied to a request with a response in {}", timing);
});

// Wrap a service in `Timeit`!
let my_timed_service = tokio_timeit_middleware::Timeit::new(my_tokio_service, time_sink);

Dependencies

~0.7–1MB
~16K SLoC