def get_baggage_item(self, key: str) -> Optional[object]: """Retrieves value of the baggage item with the given key. Args: key: A tag key. Returns: Returns this :class:`SpanShim` instance to allow call chaining. """ # pylint: disable=protected-access return get_baggage(key, context=self._context._baggage)
def send_requests(): RequestsInstrumentor().instrument() configure_opentelemetry( service_name="client_service_name", service_version="client_version", # optional ) tracer = get_tracer(__name__) def request(url): with tracer.start_as_current_span("request to {}".format(url)) as span: try: get(url) except Exception as error: span.set_attribute("error", "true") span.record_exception(error) attempts = 10 for attempt in range(attempts): debug("Sending requests %s/%s", attempt + 1, attempts) with tracer.start_as_current_span("foo"): debug("Current span: %s", get_current_span()) with tracer.start_as_current_span("add-attribute") as span: span.set_attribute("attr1", "valu1") debug("Current span: %s", get_current_span()) debug( "Baggage: %s", get_baggage("example", set_baggage("example", "value")), ) with tracer.start_as_current_span("bar"): debug("Hello, server!") request("http://localhost:8000/hello") request("http://doesnotexist:8000") sleep(1) request("http://localhost:8000/shutdown")
def test_baggages_current_context(self): token = context.attach(baggage.set_baggage("test", "value")) self.assertEqual(baggage.get_baggage("test"), "value") context.detach(token) self.assertEqual(baggage.get_baggage("test"), None)
# Copyright The OpenTelemetry Authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from opentelemetry import baggage, trace tracer = trace.get_tracer(__name__) global_ctx = baggage.set_baggage("context", "global") with tracer.start_as_current_span(name="root span") as root_span: parent_ctx = baggage.set_baggage("context", "parent") with tracer.start_as_current_span(name="child span", context=parent_ctx) as child_span: child_ctx = baggage.set_baggage("context", "child") print(baggage.get_baggage("context", global_ctx)) print(baggage.get_baggage("context", parent_ctx)) print(baggage.get_baggage("context", child_ctx))