Esempio n. 1
0
    def decorator(*args, **keywords):
        try:
            route = args[2] if args[2] else None
            context.push_tag('web.route', route)
            context.push_tag('web.method', args[1])
            telemetry.count('web.requests')
            Timing.push_timer()

            # call the request function
            response = f(*args, **keywords)

            if response.status:
                telemetry.count('web.status.%sxx' % response.status[0:1])
            return response
        except Exception as e:
            telemetry.count('web.errors')
            raise e
        finally:
            try:
                elapsed, net_elapsed = Timing.pop_timer()
                telemetry.record('web.response.latency', elapsed)
                telemetry.record('app.response.latency', net_elapsed)
                try:
                    context.pop_tag()
                    context.pop_tag()
                except:
                    logger.exception('Problem popping contexts')
            except:
                logger.exception('Teardown handler failed')
                raise
Esempio n. 2
0
def push_tag(key, value):
    """
    Pushes the given key-value pair onto the context stack.

    :param key:
    :param value:
    :return:
    """
    context.push_tag(key, value)
    return None
Esempio n. 3
0
    def decorator(*args, **keywords):
        try:
            from flask import request
            route = request.url_rule.rule if request.url_rule else None
            context.push_tag('web.route', route)
            context.push_tag('web.method', request.method)
            telemetry.count('web.requests')
            Timing.push_timer()

            return f(*args, **keywords)
        finally:
            elapsed, net_elapsed = Timing.pop_timer()
            telemetry.record('web.response.latency', elapsed)
            telemetry.record('app.response.latency', net_elapsed)
            context.pop_tag()
            context.pop_tag()
Esempio n. 4
0
 def process_request(self, request):
     self.is_active = True
     Timing.push_timer()
     context.push_state(STATE_NAME)
     context.push_tag("web.route", request.path)
     telemetry.count("web.requests")