feat(flask): Add span streaming support and request body capture#6264
feat(flask): Add span streaming support and request body capture#6264ericapisani wants to merge 3 commits into
Conversation
Add request body data to the streaming segment span when span streaming is enabled. Update existing tests to cover both streaming and non-streaming code paths, and add new tests for request body capture, size limits, and header scrubbing in streaming mode. Fixes PY-2323 Fixes #6021
|
bugbot run |
|
@sentry review |
Codecov Results 📊✅ 282 passed | Total: 282 | Pass Rate: 100% | Execution Time: 42.30s 📊 Comparison with Base Branch
✨ No test changes detected All tests are passing successfully. ❌ Patch coverage is 13.89%. Project has 14795 uncovered lines. Files with missing lines (3)
Coverage diff@@ Coverage Diff @@
## main #PR +/-##
==========================================
+ Coverage 28.45% 33.58% +5.13%
==========================================
Files 190 190 —
Lines 22250 22275 +25
Branches 7534 7544 +10
==========================================
+ Hits 6330 7480 +1150
- Misses 15920 14795 -1125
- Partials 606 747 +141Generated by Codecov Action |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit c74acb1. Configure here.
| extractor = FlaskRequestExtractor(request) | ||
|
|
||
| if not request_body_within_bounds(client, content_length): | ||
| data = AnnotatedValue.substituted_because_over_size_limit() |
There was a problem hiding this comment.
This general logic mostly follows what happens with the request extractor, but Instead of removing the string entirely, it substitutes it with a value to explain why a value was removed, as opposed to providing only an empty string.

Add span streaming support to the Flask integration. When span streaming is enabled via
_experiments={"trace_lifecycle": "stream"}, the integration now captures request body data as an attribute on the segment span.The request body handling respects existing size limits and content type rules — oversized bodies get the substitution marker, unparseable raw data gets annotated accordingly (different from what we do today where we remove the value entirely).
Fixes PY-2323
Fixes #6021