forked from open-telemetry/opentelemetry-python-contrib
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtornado_test_app.py
122 lines (91 loc) · 3.22 KB
/
tornado_test_app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# pylint: disable=W0223,R0201
import time
import tornado.web
from tornado import gen
class AsyncHandler(tornado.web.RequestHandler):
async def get(self):
with self.application.tracer.start_as_current_span("sub-task-wrapper"):
await self.do_something1()
await self.do_something2()
self.set_status(201)
self.write("{}")
async def do_something1(self):
with self.application.tracer.start_as_current_span("sub-task-1"):
tornado.gen.sleep(0.1)
async def do_something2(self):
with self.application.tracer.start_as_current_span("sub-task-2"):
tornado.gen.sleep(0.1)
class CoroutineHandler(tornado.web.RequestHandler):
@gen.coroutine
def get(self):
with self.application.tracer.start_as_current_span("sub-task-wrapper"):
yield self.do_something1()
yield self.do_something2()
self.set_status(201)
self.write("{}")
@gen.coroutine
def do_something1(self):
with self.application.tracer.start_as_current_span("sub-task-1"):
tornado.gen.sleep(0.1)
@gen.coroutine
def do_something2(self):
with self.application.tracer.start_as_current_span("sub-task-2"):
tornado.gen.sleep(0.1)
class MainHandler(tornado.web.RequestHandler):
def _handler(self):
with self.application.tracer.start_as_current_span("manual"):
self.write("Hello, world")
self.set_status(201)
def get(self):
return self._handler()
def post(self):
return self._handler()
def patch(self):
return self._handler()
def delete(self):
return self._handler()
def put(self):
return self._handler()
def head(self):
return self._handler()
def options(self):
return self._handler()
class BadHandler(tornado.web.RequestHandler):
def get(self):
raise NameError("some random name error")
class DynamicHandler(tornado.web.RequestHandler):
def get(self):
self.set_status(202)
class FinishedHandler(tornado.web.RequestHandler):
def on_finish(self):
with self.application.tracer.start_as_current_span("audit_task"):
time.sleep(0.05)
def get(self):
self.write("Test can finish")
self.set_status(200)
class HealthCheckHandler(tornado.web.RequestHandler):
def get(self):
self.set_status(200)
class CustomResponseHeaderHandler(tornado.web.RequestHandler):
def get(self):
self.set_header("content-type", "text/plain; charset=utf-8")
self.set_header("content-length", "0")
self.set_header(
"my-custom-header", "my-custom-value-1,my-custom-header-2"
)
self.set_status(200)
def make_app(tracer):
app = tornado.web.Application(
[
(r"/", MainHandler),
(r"/error", BadHandler),
(r"/cor", CoroutineHandler),
(r"/async", AsyncHandler),
(r"/on_finish", FinishedHandler),
(r"/healthz", HealthCheckHandler),
(r"/ping", HealthCheckHandler),
(r"/test_custom_response_headers", CustomResponseHeaderHandler),
]
)
app.tracer = tracer
return app