Skip to content

feat(wsgi): Migrate SentryWsgiMiddleware to span-streaming SDK#5477

Draft
sentrivana wants to merge 1 commit intofeat/span-first-2from
feat/migrate-integrations-experiment
Draft

feat(wsgi): Migrate SentryWsgiMiddleware to span-streaming SDK#5477
sentrivana wants to merge 1 commit intofeat/span-first-2from
feat/migrate-integrations-experiment

Conversation

@sentrivana
Copy link
Contributor

@sentrivana sentrivana commented Feb 18, 2026

Trying stuff out

Summary

  • Add dual-path span creation in SentryWsgiMiddleware.__call__ following the same pattern used in ASGI, Celery, Django, and Starlette migrations
  • When span streaming is enabled, uses sentry_sdk.traces.continue_trace() + sentry_sdk.traces.start_span() instead of the legacy transaction API
  • Updates _sentry_start_response type hint to accept both Transaction and StreamedSpan

🤖 Generated with Claude Code

Add dual-path span creation in WSGI middleware following the same
pattern used in ASGI, Celery, Django, and Starlette migrations. When
span streaming is enabled, uses sentry_sdk.traces.continue_trace() and
sentry_sdk.traces.start_span() instead of the legacy transaction API.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions
Copy link
Contributor

github-actions bot commented Feb 18, 2026

Semver Impact of This PR

🟡 Minor (new features)

📋 Changelog Preview

This is how your changes will appear in the changelog.
Entries from this PR are highlighted with a left border (blockquote style).


New Features ✨

  • (wsgi) Migrate SentryWsgiMiddleware to span-streaming SDK by sentrivana in #5477

Bug Fixes 🐛

Openai Agents

  • Patch execute_final_output() functions following library refactor by alexander-alderman-webb in #5453
  • Patch execute_handoffs() functions following library refactor by alexander-alderman-webb in #5452
  • Patch run_single_turn_streamed() functions following library refactor by alexander-alderman-webb in #5451
  • Patch run_single_turn() functions following library refactor by alexander-alderman-webb in #5450
  • Patch models functions following library refactor by alexander-alderman-webb in #5449
  • Patch tool functions following library refactor by alexander-alderman-webb in #5445

Internal Changes 🔧

  • (openai-agents) New tool field and library error log by alexander-alderman-webb in #5454
  • Use fixed clickhouse action, remove aws-sam-cli dependency by sentrivana in #5457

Other

  • [do not merge] feat: Span streaming & new span API by sentrivana in #5317
  • Update CHANGELOG.md by alexander-alderman-webb in f75a9ac1
  • Update CHANGELOG.md by alexander-alderman-webb in b700fa85
  • release: 2.53.0 by alexander-alderman-webb in 45379e20

🤖 This preview updates automatically when you update the PR.

@github-actions
Copy link
Contributor

github-actions bot commented Feb 18, 2026

Codecov Results 📊

13 passed | Total: 13 | Pass Rate: 100% | Execution Time: 6.30s

All tests are passing successfully.

❌ Patch coverage is 11.11%. Project has 14303 uncovered lines.

Files with missing lines (180)
File Patch % Lines
langchain.py 3.28% ⚠️ 590 Missing
utils.py 52.63% ⚠️ 432 Missing and 79 partials
openai.py 5.57% ⚠️ 492 Missing
utils.py 0.00% ⚠️ 479 Missing
tracing_utils.py 39.24% ⚠️ 429 Missing and 28 partials
__init__.py 5.28% ⚠️ 377 Missing
starlette.py 5.26% ⚠️ 360 Missing
scope.py 67.20% ⚠️ 287 Missing and 69 partials
transport.py 23.54% ⚠️ 302 Missing and 2 partials
client.py 55.98% ⚠️ 221 Missing and 56 partials
mcp.py 5.24% ⚠️ 253 Missing
traces.py 28.49% ⚠️ 251 Missing
anthropic.py 9.12% ⚠️ 249 Missing
transaction_profiler.py 35.52% ⚠️ 216 Missing and 10 partials
utils.py 16.35% ⚠️ 220 Missing
strawberry.py 8.02% ⚠️ 218 Missing
langgraph.py 5.29% ⚠️ 215 Missing
span_processor.py 0.00% ⚠️ 205 Missing
__init__.py 5.14% ⚠️ 203 Missing
continuous_profiler.py 43.45% ⚠️ 177 Missing and 17 partials
tracing.py 71.37% ⚠️ 136 Missing and 38 partials
huggingface_hub.py 9.42% ⚠️ 173 Missing
aws_lambda.py 16.50% ⚠️ 167 Missing
sanic.py 9.60% ⚠️ 160 Missing
rust_tracing.py 0.00% ⚠️ 159 Missing
aiohttp.py 10.84% ⚠️ 148 Missing
cloud_resource_context.py 0.00% ⚠️ 145 Missing
ai_client.py 0.00% ⚠️ 145 Missing
litellm.py 0.00% ⚠️ 138 Missing
litestar.py 9.59% ⚠️ 132 Missing
starlite.py 8.33% ⚠️ 132 Missing
asgi.py 19.50% ⚠️ 128 Missing
falcon.py 8.94% ⚠️ 112 Missing
flask.py 12.50% ⚠️ 112 Missing
spotlight.py 28.47% ⚠️ 103 Missing and 8 partials
cohere.py 12.70% ⚠️ 110 Missing
wsgi.py 21.99% ⚠️ 110 Missing
asgi.py 0.00% ⚠️ 109 Missing
envelope.py 54.04% ⚠️ 91 Missing and 17 partials
hub.py 45.60% ⚠️ 105 Missing and 3 partials
pymongo.py 10.17% ⚠️ 106 Missing
caching.py 0.00% ⚠️ 106 Missing
asyncpg.py 11.86% ⚠️ 104 Missing
utils.py 0.00% ⚠️ 103 Missing
templates.py 0.00% ⚠️ 100 Missing
utils.py 13.79% ⚠️ 100 Missing
quart.py 16.10% ⚠️ 99 Missing
stdlib.py 54.10% ⚠️ 84 Missing and 15 partials
gcp.py 0.00% ⚠️ 98 Missing
otlp.py 0.00% ⚠️ 97 Missing
agent_run.py 0.00% ⚠️ 97 Missing
sessions.py 27.82% ⚠️ 96 Missing
models.py 4.95% ⚠️ 96 Missing
httpx.py 12.15% ⚠️ 94 Missing
pyramid.py 13.76% ⚠️ 94 Missing
tornado.py 14.55% ⚠️ 94 Missing
__init__.py 0.00% ⚠️ 93 Missing
bottle.py 11.65% ⚠️ 91 Missing
middleware.py 0.00% ⚠️ 90 Missing
agent_run.py 0.00% ⚠️ 90 Missing
_wsgi_common.py 30.71% ⚠️ 88 Missing and 1 partials
runner.py 0.00% ⚠️ 87 Missing
loguru.py 11.58% ⚠️ 84 Missing
__init__.py 4.65% ⚠️ 82 Missing
asyncio.py 0.00% ⚠️ 80 Missing
invoke_agent.py 0.00% ⚠️ 79 Missing
session.py 15.56% ⚠️ 76 Missing
clickhouse_driver.py 17.58% ⚠️ 75 Missing
sqlalchemy.py 10.71% ⚠️ 75 Missing
graphene.py 12.94% ⚠️ 74 Missing
pure_eval.py 0.00% ⚠️ 73 Missing
worker.py 22.58% ⚠️ 72 Missing
monitoring.py 17.44% ⚠️ 71 Missing
ariadne.py 14.46% ⚠️ 71 Missing
gql.py 10.13% ⚠️ 71 Missing
fastapi.py 15.85% ⚠️ 69 Missing
transactions.py 0.00% ⚠️ 67 Missing
_queue.py 26.67% ⚠️ 66 Missing
logging.py 66.67% ⚠️ 51 Missing and 15 partials
boto3.py 14.86% ⚠️ 63 Missing
streaming.py 0.00% ⚠️ 62 Missing
__init__.py 86.64% ⚠️ 37 Missing and 22 partials
chalice.py 16.18% ⚠️ 57 Missing
propagator.py 0.00% ⚠️ 57 Missing
api.py 63.40% ⚠️ 56 Missing
server.py 0.00% ⚠️ 56 Missing
spark_driver.py 67.47% ⚠️ 54 Missing and 2 partials
graph_nodes.py 0.00% ⚠️ 52 Missing
gnu_backtrace.py 0.00% ⚠️ 51 Missing
socket.py 0.00% ⚠️ 50 Missing
views.py 0.00% ⚠️ 50 Missing
_span_batcher.py 31.94% ⚠️ 49 Missing
tools.py 0.00% ⚠️ 49 Missing
_batcher.py 41.25% ⚠️ 47 Missing
invoke_agent.py 0.00% ⚠️ 46 Missing
_asgi_common.py 16.67% ⚠️ 45 Missing
signals_handlers.py 0.00% ⚠️ 44 Missing
utils.py 22.22% ⚠️ 42 Missing and 1 partials
threading.py 63.16% ⚠️ 35 Missing and 5 partials
client.py 0.00% ⚠️ 40 Missing
serializer.py 84.95% ⚠️ 28 Missing and 10 partials
executing.py 0.00% ⚠️ 38 Missing
client.py 0.00% ⚠️ 38 Missing
serverless.py 0.00% ⚠️ 36 Missing
server.py 0.00% ⚠️ 35 Missing
sys_exit.py 0.00% ⚠️ 32 Missing
caches.py 49.15% ⚠️ 30 Missing and 2 partials
launchdarkly.py 0.00% ⚠️ 31 Missing
trytond.py 0.00% ⚠️ 30 Missing
integration.py 0.00% ⚠️ 30 Missing
error_tracing.py 0.00% ⚠️ 29 Missing
tools.py 0.00% ⚠️ 27 Missing
ai_client.py 13.33% ⚠️ 26 Missing
execute_tool.py 0.00% ⚠️ 26 Missing
utils.py 74.67% ⚠️ 19 Missing and 7 partials
scrubber.py 76.81% ⚠️ 16 Missing and 9 partials
_openai_completions_api.py 19.35% ⚠️ 25 Missing
ray.py 70.24% ⚠️ 25 Missing
_werkzeug.py 11.11% ⚠️ 24 Missing
typer.py 0.00% ⚠️ 24 Missing
tasks.py 0.00% ⚠️ 24 Missing
_compat.py 41.03% ⚠️ 23 Missing
statsig.py 0.00% ⚠️ 23 Missing
logger.py 43.59% ⚠️ 22 Missing
decorator.py 37.14% ⚠️ 22 Missing
__init__.py 84.78% ⚠️ 14 Missing and 8 partials
_log_batcher.py 0.00% ⚠️ 21 Missing
attachments.py 27.59% ⚠️ 21 Missing
unraisablehook.py 0.00% ⚠️ 21 Missing
openfeature.py 0.00% ⚠️ 20 Missing
execute_tool.py 0.00% ⚠️ 20 Missing
dramatiq.py 90.91% ⚠️ 10 Missing and 9 partials
unleash.py 0.00% ⚠️ 19 Missing
_lru_cache.py 43.33% ⚠️ 17 Missing and 1 partials
model_request.py 0.00% ⚠️ 18 Missing
monitor.py 81.97% ⚠️ 11 Missing and 5 partials
beat.py 92.24% ⚠️ 9 Missing and 7 partials
utils.py 0.00% ⚠️ 16 Missing
redis_cluster.py 52.94% ⚠️ 16 Missing
atexit.py 56.25% ⚠️ 14 Missing and 1 partials
excepthook.py 56.25% ⚠️ 14 Missing and 1 partials
feature_flags.py 56.25% ⚠️ 14 Missing
__init__.py 27.78% ⚠️ 13 Missing
types.py 0.00% ⚠️ 12 Missing
_async_common.py 86.27% ⚠️ 7 Missing and 5 partials
_types.py 66.67% ⚠️ 10 Missing
handoff.py 0.00% ⚠️ 10 Missing
_sync_common.py 88.00% ⚠️ 6 Missing and 4 partials
spark_worker.py 89.29% ⚠️ 6 Missing and 4 partials
metrics.py 47.06% ⚠️ 9 Missing
beam.py 94.05% ⚠️ 5 Missing and 3 partials
dedupe.py 85.00% ⚠️ 6 Missing and 2 partials
rq.py 97.44% ⚠️ 2 Missing and 6 partials
_metrics_batcher.py 65.00% ⚠️ 7 Missing
consts.py 0.00% ⚠️ 7 Missing
redis_py_cluster_legacy.py 53.33% ⚠️ 7 Missing
_init_implementation.py 75.00% ⚠️ 6 Missing
_openai_responses_api.py 33.33% ⚠️ 6 Missing
arq.py 97.52% ⚠️ 3 Missing and 3 partials
queries.py 90.32% ⚠️ 3 Missing and 2 partials
debug.py 91.30% ⚠️ 2 Missing and 2 partials
consts.py 0.00% ⚠️ 4 Missing
__init__.py 20.00% ⚠️ 4 Missing
__init__.py 0.00% ⚠️ 4 Missing
__init__.py 89.66% ⚠️ 3 Missing and 1 partials
__init__.py 0.00% ⚠️ 3 Missing
__init__.py 40.00% ⚠️ 3 Missing
__init__.py 0.00% ⚠️ 3 Missing
__init__.py 0.00% ⚠️ 3 Missing
rb.py 70.00% ⚠️ 3 Missing
redis.py 85.00% ⚠️ 3 Missing
consts.py 99.43% ⚠️ 2 Missing
argv.py 100.00% ⚠️ 2 partials
huey.py 100.00% ⚠️ 2 partials
modules.py 94.12% ⚠️ 1 Missing and 1 partials
utils.py 88.24% ⚠️ 2 Missing
agent_workflow.py 71.43% ⚠️ 2 Missing
api.py 100.00% ⚠️ 1 partials
consts.py 0.00% ⚠️ 1 Missing
consts.py 0.00% ⚠️ 1 Missing

Generated by Codecov Action

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

Comments