Skip to content

Commit e8db8d8

Browse files
authored
fix tracers and logging Working outside of application context (#76)
* fix tracers and logging Working outside of application context * No cover exception * No cover exception
1 parent b48232f commit e8db8d8

File tree

4 files changed

+19
-16
lines changed

4 files changed

+19
-16
lines changed

examples/microservice_requests/main.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from examples.microservice_requests import ms
2+
23
app = ms.create_app()
34

45
if __name__ == '__main__':

pyms/flask/services/requests.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ def insert_trace_headers(headers: dict) -> dict:
8181

8282
try:
8383
headers = inject_span_in_headers(headers)
84-
except Exception as ex:
84+
except Exception as ex: # pragma: no cover
8585
logger.debug("Tracer error {}".format(ex))
8686
return headers
8787

pyms/flask/services/tracer.py

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import logging
22

33
import opentracing
4-
from flask import current_app, request
4+
from flask import current_app, request, has_request_context
55
from jaeger_client.metrics.prometheus import PrometheusMetricsFactory
66
from opentracing_instrumentation import get_current_span
77

@@ -19,18 +19,20 @@
1919

2020

2121
def inject_span_in_headers(headers):
22-
# FLASK https://github.com/opentracing-contrib/python-flask
23-
tracer = current_app.tracer
24-
# Add traces
25-
span = None
26-
if tracer:
27-
span = tracer.get_span(request=request)
28-
if not span: # pragma: no cover
29-
span = get_current_span()
30-
if not span:
31-
span = tracer.tracer.start_span()
32-
context = span.context if span else None
33-
tracer.tracer.inject(context, opentracing.Format.HTTP_HEADERS, headers)
22+
if has_request_context():
23+
# FLASK https://github.com/opentracing-contrib/python-flask
24+
tracer = current_app.tracer if getattr(current_app, "tracer") else None
25+
# Add traces
26+
span = None
27+
current_app.app_context()
28+
if tracer:
29+
span = tracer.get_span(request=request)
30+
if not span: # pragma: no cover
31+
span = get_current_span()
32+
if not span:
33+
span = tracer.tracer.start_span()
34+
context = span.context if span else None
35+
tracer.tracer.inject(context, opentracing.Format.HTTP_HEADERS, headers)
3436
return headers
3537

3638

pyms/logger/logger.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ def add_fields(self, log_record, record, message_dict):
3232
log_record["trace"] = headers.get('X-B3-TraceId', "")
3333
log_record["span"] = headers.get('X-B3-SpanId', "")
3434
log_record["parent"] = headers.get('X-B3-ParentSpanId', "")
35-
except Exception as ex:
36-
logger.error("Tracer error {}".format(ex))
35+
except Exception as ex: # pragma: no cover
36+
logger.error("Tracer error: {}".format(ex))
3737

3838
def add_service_name(self, project_name):
3939
self.service_name = project_name.lower()

0 commit comments

Comments
 (0)