ray-llm
33 строки · 896.0 Байт
1from contextlib import contextmanager2from typing import Generator, Mapping3
4from opentelemetry.baggage import get_baggage, set_baggage5from opentelemetry.context import get_current6from opentelemetry.util.types import AttributeValue7
8from rayllm.backend.observability.tracing.context import use_context9
10
11@contextmanager
12def baggage(attributes: Mapping[str, AttributeValue]) -> Generator[None, None, None]:13"""14A context manager that sets multiple baggage values on the active context.
15This can be combined with the BaggageSpanProcessor to add the baggage values
16to the span as attributes.
17
18Example:
19
20with baggage({"foo": "bar"}):
21do_something()
22
23"""
24ctx = get_current()25for key, value in attributes.items():26ctx = set_baggage(key, value, context=ctx)27
28with use_context(ctx):29yield30
31
32def get(key: str):33return get_baggage(key)34