def start_span( self, span=None, # type: Optional[Span] **kwargs # type: Any ): # type: (...) -> Span """ Create a new span whose parent span is the currently active span, if any. The return value is the span object that can be used as a context manager to start and stop timing. Note that you will not see any span that is not contained within a transaction. Create a transaction with ``start_span(transaction="my transaction")`` if an integration doesn't already do this for you. """ client, scope = self._stack[-1] kwargs.setdefault("hub", self) if span is None: if scope.span is not None: span = scope.span.new_span(**kwargs) else: span = Span(**kwargs) if span.sampled is None and span.transaction is not None: sample_rate = client and client.options["traces_sample_rate"] or 0 span.sampled = random.random() < sample_rate if span.sampled: span.init_finished_spans() return span
def start_span( self, span=None, # type: Optional[Span] **kwargs # type: Any ): # type: (...) -> Span # TODO: Document client, scope = self._stack[-1] if span is None: if scope.span is not None: span = scope.span.new_span(**kwargs) else: span = Span(**kwargs) if span.sampled is None and span.transaction is not None: sample_rate = client and client.options["traces_sample_rate"] or 0 span.sampled = random.random() < sample_rate if span.sampled: span.init_finished_spans() return span