Skip to content

Commit bf5274b

Browse files
authored
fix(flask): Remove double-scope (#758)
Pushing the scope has little value even for the one usecase it was designed for (cli apps), as those run in their own processes anyway.
1 parent 719bca1 commit bf5274b

File tree

2 files changed

+18
-27
lines changed

2 files changed

+18
-27
lines changed

sentry_sdk/integrations/flask.py

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,6 @@
3737
__version__ as FLASK_VERSION,
3838
)
3939
from flask.signals import (
40-
appcontext_pushed,
41-
appcontext_tearing_down,
4240
got_request_exception,
4341
request_started,
4442
)
@@ -74,8 +72,6 @@ def setup_once():
7472
if version < (0, 11):
7573
raise DidNotEnable("Flask 0.11 or newer is required.")
7674

77-
appcontext_pushed.connect(_push_appctx)
78-
appcontext_tearing_down.connect(_pop_appctx)
7975
request_started.connect(_request_started)
8076
got_request_exception.connect(_capture_exception)
8177

@@ -93,26 +89,6 @@ def sentry_patched_wsgi_app(self, environ, start_response):
9389
Flask.__call__ = sentry_patched_wsgi_app # type: ignore
9490

9591

96-
def _push_appctx(*args, **kwargs):
97-
# type: (*Flask, **Any) -> None
98-
hub = Hub.current
99-
if hub.get_integration(FlaskIntegration) is not None:
100-
# always want to push scope regardless of whether WSGI app might already
101-
# have (not the case for CLI for example)
102-
scope_manager = hub.push_scope()
103-
scope_manager.__enter__()
104-
_app_ctx_stack.top.sentry_sdk_scope_manager = scope_manager
105-
with hub.configure_scope() as scope:
106-
scope._name = "flask"
107-
108-
109-
def _pop_appctx(*args, **kwargs):
110-
# type: (*Flask, **Any) -> None
111-
scope_manager = getattr(_app_ctx_stack.top, "sentry_sdk_scope_manager", None)
112-
if scope_manager is not None:
113-
scope_manager.__exit__(None, None, None)
114-
115-
11692
def _request_started(sender, **kwargs):
11793
# type: (Flask, **Any) -> None
11894
hub = Hub.current

tests/integrations/flask/test_flask.py

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
from flask_login import LoginManager, login_user
1313

1414
from sentry_sdk import (
15+
set_tag,
1516
configure_scope,
1617
capture_message,
1718
capture_exception,
@@ -630,20 +631,34 @@ def zerodivision(e):
630631
def test_tracing_success(sentry_init, capture_events, app):
631632
sentry_init(traces_sample_rate=1.0, integrations=[flask_sentry.FlaskIntegration()])
632633

634+
@app.before_request
635+
def _():
636+
set_tag("before_request", "yes")
637+
638+
@app.route("/message_tx")
639+
def hi_tx():
640+
set_tag("view", "yes")
641+
capture_message("hi")
642+
return "ok"
643+
633644
events = capture_events()
634645

635646
with app.test_client() as client:
636-
response = client.get("/message")
647+
response = client.get("/message_tx")
637648
assert response.status_code == 200
638649

639650
message_event, transaction_event = events
640651

641652
assert transaction_event["type"] == "transaction"
642-
assert transaction_event["transaction"] == "hi"
653+
assert transaction_event["transaction"] == "hi_tx"
643654
assert transaction_event["contexts"]["trace"]["status"] == "ok"
655+
assert transaction_event["tags"]["view"] == "yes"
656+
assert transaction_event["tags"]["before_request"] == "yes"
644657

645658
assert message_event["message"] == "hi"
646-
assert message_event["transaction"] == "hi"
659+
assert message_event["transaction"] == "hi_tx"
660+
assert message_event["tags"]["view"] == "yes"
661+
assert message_event["tags"]["before_request"] == "yes"
647662

648663

649664
def test_tracing_error(sentry_init, capture_events, app):

0 commit comments

Comments
 (0)