コード例 #1
0
ファイル: traces.py プロジェクト: Ismael/apm-agent-python
 def begin_span(self, name, span_type, context=None, leaf=False):
     parent_span = get_span()
     tracer = self._tracer
     if parent_span and parent_span.leaf:
         span = DroppedSpan(parent_span, leaf=True)
     elif tracer.max_spans and self._span_counter > tracer.max_spans - 1:
         self.dropped_spans += 1
         span = DroppedSpan(parent_span)
         self._span_counter += 1
     else:
         span = Span(transaction=self, name=name, span_type=span_type, context=context, leaf=leaf)
         span.frames = tracer.frames_collector_func()
         span.parent = parent_span
         self._span_counter += 1
     set_span(span)
     return span
コード例 #2
0
ファイル: traces.py プロジェクト: Ismael/apm-agent-python
    def end_span(self, skip_frames):
        span = get_span()
        if span is None:
            raise LookupError()
        if isinstance(span, DroppedSpan):
            set_span(span.parent)
            return

        span.duration = _time_func() - span.start_time

        if not self._tracer.span_frames_min_duration or span.duration >= self._tracer.span_frames_min_duration:
            span.frames = self._tracer.frames_processing_func(span.frames)[skip_frames:]
        else:
            span.frames = None
        self.spans.append(span)
        set_span(span.parent)
        self._tracer.queue_func(SPAN, span.to_dict())
        return span