Skip to content

Commit 94ce9b4

Browse files
committed
bugfix: should not crash when no request context
1 parent 37b11fc commit 94ce9b4

2 files changed

Lines changed: 21 additions & 12 deletions

File tree

sentry_sdk/integrations/flask.py

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -49,17 +49,18 @@ def _capture_exception(sender, exception, **kwargs):
4949

5050

5151
def _event_processor(event):
52-
if "transaction" not in event:
52+
if request:
53+
if "transaction" not in event:
54+
try:
55+
event["transaction"] = request.url_rule.endpoint
56+
except Exception:
57+
get_current_hub().capture_internal_exception()
58+
5359
try:
54-
event["transaction"] = request.url_rule.endpoint
60+
FlaskRequestExtractor(request).extract_into_event(event)
5561
except Exception:
5662
get_current_hub().capture_internal_exception()
5763

58-
try:
59-
FlaskRequestExtractor(request).extract_into_event(event)
60-
except Exception:
61-
get_current_hub().capture_internal_exception()
62-
6364
try:
6465
_set_user_info(event)
6566
except Exception:
@@ -99,10 +100,13 @@ def _set_user_info(event):
99100
if "user" in event:
100101
return
101102

102-
try:
103-
ip_address = request.access_route[0]
104-
except IndexError:
105-
ip_address = request.remote_addr
103+
if request:
104+
try:
105+
ip_address = request.access_route[0]
106+
except IndexError:
107+
ip_address = request.remote_addr
108+
else:
109+
ip_address = None
106110

107111
user_info = {"id": None, "ip_address": ip_address}
108112

tests/integrations/flask/test_flask.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
from flask_login import LoginManager, login_user
1111

12-
from sentry_sdk import capture_message, Client, get_current_hub
12+
from sentry_sdk import capture_message, Client, get_current_hub, capture_exception
1313
import sentry_sdk.integrations.flask as flask_sentry
1414

1515
get_current_hub().bind_client(Client(integrations=["flask", "logging"]))
@@ -278,3 +278,8 @@ def index():
278278

279279
event, = capture_events
280280
assert event["level"] == "error"
281+
282+
283+
def test_no_errors_without_request(app):
284+
with app.app_context():
285+
capture_exception(ValueError())

0 commit comments

Comments
 (0)