44
55import time
66from contextlib import contextmanager
7- from typing import Any , Callable , Dict , Iterator , Tuple
7+ from typing import TYPE_CHECKING , Any , Callable , Dict , Iterator , Tuple
88
99import wrapt
1010from opentelemetry .trace import use_span
1313from instana .configurator import config
1414from instana .log import logger
1515from instana .span .span import InstanaSpan
16- from instana .util .traceutils import get_tracer_tuple , tracing_is_off
16+ from instana .util .traceutils import get_tracer_tuple
1717
1818try :
1919 import asyncio
2020
21+ if TYPE_CHECKING :
22+ from instana .tracer import InstanaTracer
23+
2124 @wrapt .patch_function_wrapper ("asyncio" , "ensure_future" )
2225 def ensure_future_with_instana (
2326 wrapped : Callable [..., asyncio .ensure_future ],
2427 instance : object ,
2528 argv : Tuple [object , Tuple [object , ...]],
2629 kwargs : Dict [str , Any ],
2730 ) -> object :
28- if (
29- not config ["asyncio_task_context_propagation" ]["enabled" ]
30- or tracing_is_off ()
31- ):
31+ tracer , parent_span , _ = get_tracer_tuple ()
32+ if not config ["asyncio_task_context_propagation" ]["enabled" ] or not tracer :
3233 return wrapped (* argv , ** kwargs )
3334
34- with _start_as_current_async_span () as span :
35+ with _start_as_current_async_span (tracer , parent_span ) as span :
3536 try :
3637 span .set_status (StatusCode .OK )
3738 return wrapped (* argv , ** kwargs )
@@ -47,26 +48,26 @@ def create_task_with_instana(
4748 argv : Tuple [object , Tuple [object , ...]],
4849 kwargs : Dict [str , Any ],
4950 ) -> object :
50- if (
51- not config ["asyncio_task_context_propagation" ]["enabled" ]
52- or tracing_is_off ()
53- ):
51+ tracer , parent_span , _ = get_tracer_tuple ()
52+ if not config ["asyncio_task_context_propagation" ]["enabled" ] or not tracer :
5453 return wrapped (* argv , ** kwargs )
5554
56- with _start_as_current_async_span () as span :
55+ with _start_as_current_async_span (tracer , parent_span ) as span :
5756 try :
5857 span .set_status (StatusCode .OK )
5958 return wrapped (* argv , ** kwargs )
6059 except Exception as exc :
6160 logger .debug (f"asyncio create_task_with_instana error: { exc } " )
6261
6362 @contextmanager
64- def _start_as_current_async_span () -> Iterator [InstanaSpan ]:
63+ def _start_as_current_async_span (
64+ tracer : "InstanaTracer" ,
65+ parent_span : "InstanaSpan" ,
66+ ) -> Iterator [InstanaSpan ]:
6567 """
6668 Creates and yield a special InstanaSpan to only propagate the Asyncio
6769 context.
6870 """
69- tracer , parent_span , _ = get_tracer_tuple ()
7071 parent_context = parent_span .get_span_context () if parent_span else None
7172
7273 _time = time .time_ns ()
0 commit comments