import logging import timeit class ResponseTimeMiddleware(object): def __init__(self, app): self.app = app self.logger = logging.getLogger("info.timing.middleware") def __call__(self, environ, start_response): start_time = timeit.default_timer() def injecting_response_time(status, headers, exc_info=None): diff = timeit.default_timer() - start_time self.logger.info(f"<{environ['REQUEST_URI']}> execution time: {diff}s") return start_response(status, headers, exc_info) return self.app(environ, injecting_response_time)