'Call interface as specified by WSGI. Wraps the environment in user
friendly objects, finds the appropriate method to handle the request
and calls it.'

def __call__(self, environ, start_response):

    request_id = environ.get('request_id', 'unknown')
    if self.trace_logger:
        self.trace_logger.context_set('request_id', request_id)
    self.trace(message='Starting    request')
    try:
        return self.handle_request(environ, start_response)
    finally:
        self.trace(message='Handle    request    finished')
        if self.trace_logger:
            self.trace_logger.context_remove('request_id')
