From ba168711017548d2a8d342c4017b9bf9d7aa8147 Mon Sep 17 00:00:00 2001 From: Peter Giacomo Lombardo Date: Mon, 8 Jan 2018 19:29:03 +0100 Subject: [PATCH] Don't instrument urllib3 if it isn't present --- instana/instrumentation/urllib3.py | 60 ++++++++++++++++-------------- 1 file changed, 32 insertions(+), 28 deletions(-) diff --git a/instana/instrumentation/urllib3.py b/instana/instrumentation/urllib3.py index 9fb97ce9..1b17ef47 100644 --- a/instana/instrumentation/urllib3.py +++ b/instana/instrumentation/urllib3.py @@ -5,38 +5,42 @@ import wrapt -@wrapt.patch_function_wrapper('urllib3', 'PoolManager.urlopen') -def urlopen_with_instana(wrapped, instance, args, kwargs): - context = instana.internal_tracer.current_context() +try: + import urllib3 - # If we're not tracing, just return - if context is None: - return wrapped(*args, **kwargs) + @wrapt.patch_function_wrapper('urllib3', 'PoolManager.urlopen') + def urlopen_with_instana(wrapped, instance, args, kwargs): + context = instana.internal_tracer.current_context() - try: - span = instana.internal_tracer.start_span("urllib3", child_of=context) - span.set_tag(ext.HTTP_URL, args[1]) - span.set_tag(ext.HTTP_METHOD, args[0]) + # If we're not tracing, just return + if context is None: + return wrapped(*args, **kwargs) - instana.internal_tracer.inject(span.context, opentracing.Format.HTTP_HEADERS, kwargs["headers"]) - rv = wrapped(*args, **kwargs) + try: + span = instana.internal_tracer.start_span("urllib3", child_of=context) + span.set_tag(ext.HTTP_URL, args[1]) + span.set_tag(ext.HTTP_METHOD, args[0]) - span.set_tag(ext.HTTP_STATUS_CODE, rv.status) - if 500 <= rv.status <= 599: + instana.internal_tracer.inject(span.context, opentracing.Format.HTTP_HEADERS, kwargs["headers"]) + rv = wrapped(*args, **kwargs) + + span.set_tag(ext.HTTP_STATUS_CODE, rv.status) + if 500 <= rv.status <= 599: + span.set_tag("error", True) + ec = span.tags.get('ec', 0) + span.set_tag("ec", ec+1) + + except Exception as e: + span.log_kv({'message': e}) span.set_tag("error", True) ec = span.tags.get('ec', 0) span.set_tag("ec", ec+1) - - except Exception as e: - span.log_kv({'message': e}) - span.set_tag("error", True) - ec = span.tags.get('ec', 0) - span.set_tag("ec", ec+1) - span.finish() - raise - else: - span.finish() - return rv - - -instana.log.debug("Instrumenting urllib3") + span.finish() + raise + else: + span.finish() + return rv + + instana.log.debug("Instrumenting urllib3") +except ImportError: + pass