8000 Ensure we return a 500 on collection error. · yeahnoob/client_python@d2b3aa3 · GitHub
[go: up one dir, main page]

Skip to content

Commit d2b3aa3

Browse files
committed
Ensure we return a 500 on collection error.
1 parent 1020618 commit d2b3aa3

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

prometheus_client/exposition.py

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,16 @@
3232
def make_wsgi_app(registry=core.REGISTRY):
3333
'''Create a WSGI app which serves the metrics from a registry.'''
3434
def prometheus_app(environ, start_response):
35-
status = str('200 OK')
36-
headers = [(str('Content-type'), CONTENT_TYPE_LATEST)]
37-
start_response(status, headers)
3835
params = parse_qs(environ['QUERY_STRING'])
3936
r = registry
4037
if 'name[]' in params:
4138
r = r.restricted_registry(params['name[]'])
42-
return [generate_latest(r)]
39+
output = generate_latest(r)
40+
41+
status = str('200 OK')
42+
headers = [(str('Content-type'), CONTENT_TYPE_LATEST)]
43+
start_response(status, headers)
44+
return [output]
4345
return prometheus_app
4446

4547

@@ -75,14 +77,19 @@ def generate_latest(registry=core.REGISTRY):
7577

7678
class MetricsHandler(BaseHTTPRequestHandler):
7779
def do_GET(self):
78-
self.send_response(200)
79-
self.send_header('Content-Type', CONTENT_TYPE_LATEST)
80-
self.end_headers()
8180
registry = core.REGISTRY
8281
params = parse_qs(urlparse(self.path).query)
8382
if 'name[]' in params:
8483
registry = registry.restricted_registry(params['name[]'])
85-
self.wfile.write(generate_latest(registry))
84+
try:
85+
output = generate_latest(registry)
86+
except:
87+
self.send_error(500, 'error generating metric output')
88+
raise
89+
self.send_response(200)
90+
self.send_header('Content-Type', CONTENT_TYPE_LATEST)
91+
self.end_headers()
92+
self.wfile.write(output)
8693

8794
def log_message(self, format, *args):
8895
return

0 commit comments

Comments
 (0)
0