Skip to content

Commit ea53ddb

Browse files
committed
Merge pull request getsentry#445 from chronossc/add_sentry_id_header_to_flask_response
Use flask request_finished signal to add X-Sentry-ID in flask responses.
2 parents cfc00cb + 6486715 commit ea53ddb

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

raven/contrib/flask.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import logging
2121

2222
from flask import request, current_app
23-
from flask.signals import got_request_exception
23+
from flask.signals import got_request_exception, request_finished
2424
from raven.conf import setup_logging
2525
from raven.base import Client
2626
from raven.middleware import Sentry as SentryMiddleware
@@ -177,6 +177,10 @@ def before_request(self, *args, **kwargs):
177177
self.client.http_context(self.get_http_info(request))
178178
self.client.user_context(self.get_user_info(request))
179179

180+
def add_sentry_id_header(self, sender, response, *args, **kwargs):
181+
response.headers['X-Sentry-ID'] = self.last_event_id
182+
return response
183+
180184
def init_app(self, app, dsn=None):
181185
if dsn is not None:
182186
self.dsn = dsn
@@ -194,6 +198,7 @@ def init_app(self, app, dsn=None):
194198

195199
if self.register_signal:
196200
got_request_exception.connect(self.handle_exception, sender=app)
201+
request_finished.connect(self.add_sentry_id_header, sender=app)
197202

198203
if not hasattr(app, 'extensions'):
199204
app.extensions = {}

tests/contrib/flask/tests.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@ def test_captureException_captures_http(self):
174174
self.assertEquals(len(self.raven.events), 1)
175175

176176
event = self.raven.events.pop(0)
177+
self.assertEquals(event['event_id'], response.headers['X-Sentry-ID'])
177178

178179
assert event['message'] == 'ValueError: Boom'
179180
assert 'sentry.interfaces.Http' in event
@@ -185,6 +186,7 @@ def test_captureMessage_captures_http(self):
185186
self.assertEquals(len(self.raven.events), 1)
186187

187188
event = self.raven.events.pop(0)
189+
self.assertEquals(event['event_id'], response.headers['X-Sentry-ID'])
188190

189191
self.assertTrue('sentry.interfaces.Message' in event)
190192
self.assertTrue('sentry.interfaces.Http' in event)

0 commit comments

Comments
 (0)