1111import epsagon .trace
1212from epsagon .runners .tornado import TornadoRunner
1313from epsagon .http_filters import ignore_request , is_ignored_endpoint
14- from epsagon .utils import collect_container_metadata
14+ from epsagon .utils import collect_container_metadata , print_debug
1515
1616TORNADO_TRACE_ID = 'epsagon_tornado_trace_key'
1717
@@ -31,6 +31,7 @@ def before_request(cls, wrapped, instance, args, kwargs):
3131 :param args: wrapt's args
3232 :param kwargs: wrapt's kwargs
3333 """
34+ print_debug ('before_request Tornado request' )
3435 try :
3536 ignored = ignore_request ('' , instance .request .path )
3637 if not ignored and not is_ignored_endpoint (instance .request .path ):
@@ -48,6 +49,7 @@ def before_request(cls, wrapped, instance, args, kwargs):
4849 )
4950
5051 trace .set_runner (cls .RUNNERS [unique_id ])
52+ print_debug ('Created Tornado Runner' )
5153
5254 # Collect metadata in case this is a container.
5355 collect_container_metadata (
@@ -69,9 +71,18 @@ def after_request(cls, wrapped, instance, args, kwargs):
6971 :param args: wrapt's args
7072 :param kwargs: wrapt's kwargs
7173 """
72- response_body = getattr (instance , '_write_buffer' , None )
73- if response_body and isinstance (response_body , list ):
74- response_body = b'' .join (response_body )
74+ print_debug ('after_request Tornado request' )
75+ response_body = None
76+ try :
77+ response_body = getattr (instance , '_write_buffer' , None )
78+ if response_body and isinstance (response_body , list ):
79+ response_body = b'' .join (response_body )
80+ except Exception as instrumentation_exception : # pylint: disable=W0703
81+ epsagon .trace .trace_factory .add_exception (
82+ instrumentation_exception ,
83+ traceback .format_exc ()
84+ )
85+
7586 res = wrapped (* args , ** kwargs )
7687 try :
7788 unique_id = getattr (instance , TORNADO_TRACE_ID , None )
@@ -84,6 +95,12 @@ def after_request(cls, wrapped, instance, args, kwargs):
8495 unique_id
8596 )
8697
98+ # Ignoring 404s
99+ if getattr (instance , '_status_code' , None ) == 404 :
100+ epsagon .trace .trace_factory .pop_trace (trace = trace )
101+ print_debug ('Ignoring 404 Tornado request' )
102+ return res
103+
87104 if trace :
88105 content = (
89106 instance ._headers .get ( # pylint: disable=protected-access
@@ -111,6 +128,7 @@ def collect_exception(cls, wrapped, instance, args, kwargs):
111128 :param args: wrapt's args
112129 :param kwargs: wrapt's kwargs
113130 """
131+ print_debug ('collect_exception Tornado request' )
114132 try :
115133 unique_id = getattr (instance , TORNADO_TRACE_ID , None )
116134
0 commit comments