1818from opentelemetry .exporter .otlp .proto .http .trace_exporter \
1919 import OTLPSpanExporter
2020
21- resource = Resource (attributes = {
22- SERVICE_NAME : "Common Service"
23- })
24-
25- processor = BatchSpanProcessor (OTLPSpanExporter ( \
26- endpoint = "http://localhost:4318/v1/traces" ))
27- provider = TracerProvider (resource = resource )
28- # A provider provides tracers:
29- provider = TracerProvider (resource = resource )
30- provider .add_span_processor (processor )
31- # In python trace is global:
32- trace .set_tracer_provider (provider )
33- tracer = trace .get_tracer (__name__ )
34-
3521class TracerMiddleware (BaseTransportMiddleware ):
3622 def __init__ (self , service_name : str ):
3723 self .service_name = service_name
24+ self ._initiate_tracers (service_name )
25+
26+ def _initiate_tracers (self , service_name ):
27+ resource = Resource (attributes = {
28+ SERVICE_NAME : service_name
29+ })
30+
31+ processor = BatchSpanProcessor (OTLPSpanExporter ( \
32+ endpoint = "http://localhost:4318/v1/traces" ))
33+ # A provider provides tracers:
34+ provider = TracerProvider (resource = resource )
35+ provider .add_span_processor (processor )
36+ # In python trace is global:
37+ trace .set_tracer_provider (provider )
38+ self .tracer = trace .get_tracer (__name__ )
39+
40+
3841
3942 def _extract_trace_context (self , message ):
4043 """Retrieves span context from message"""
@@ -59,7 +62,7 @@ def subscribe(self, call_next: Callable, channel, callback, **kwargs) -> int:
5962 @functools .wraps (callback )
6063 def wrapped_callback (header , message ):
6164 ctx = self ._extract_trace_context (message )
62- with tracer .start_as_current_span (self .service_name , context = ctx ) as span :
65+ with self . tracer .start_as_current_span (self .service_name , context = ctx ) as span :
6366 if ctx == {}:
6467 self ._inject_trace_context (message )
6568 return callback (header , message )
0 commit comments