Beispiel #1
0
    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")
Beispiel #3
0
 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))