Пример #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
Пример #2
0
 def process_response(self, request, response):
     elapsed, net_elapsed = Timing.pop_timer()
     if self.is_active:
         telemetry.record("web.response.latency", elapsed)
         telemetry.record("app.response.latency", net_elapsed)
         telemetry.count("web.status.%ixx" % floor(response.status_code / 100))
         try:
             context.pop_tag()
         except IndexError:
             logger.exception("process_response cannot pop context")
         context.pop_state(STATE_NAME)
         self.is_active = False
     else:
         logger.warn("process_response without request")
     return response
Пример #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()
Пример #4
0
def pop_tag():
    """
    Pops the context entry from the top of the stack and returns it.

    Example
        context.push('route', '/v1/foo')
        context.push('user-operation', 'create-foo')
        # context is [('route', '/v1/foo'),('user-operation', 'create-foo')]
        e = context.pop()
        # e is ('user-operation', 'create-foo')
        e = context.pop()
        # e is ('route', '/v1/foo')
    :return: the entry on the top of the stack
    """
    return context.pop_tag()