Fix stream_with_context usage: it's a decorator, not a wrapper

stream_with_context decorates a generator function, not a generator
instance. Wrap execute_page_streaming in a decorated inner function.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-07 18:20:59 +00:00
parent fa70c5f297
commit b9b315c86f

View File

@@ -520,10 +520,15 @@ def _mount_one_page(bp: Any, service_name: str, page_def: PageDef) -> None:
if hasattr(result, "status_code"):
return result
return await make_response(result, 200)
# Streaming response — stream_with_context preserves app/request
# context across async generator yields
gen = execute_page_streaming(current, service_name, url_params=kwargs)
return Response(stream_with_context(gen), content_type="text/html; charset=utf-8")
# stream_with_context is a decorator — wrap the generator function
# so app/request context is preserved across yields
@stream_with_context
async def _stream():
async for chunk in execute_page_streaming(
current, service_name, url_params=kwargs,
):
yield chunk
return Response(_stream(), content_type="text/html; charset=utf-8")
else:
# Standard non-streaming response
async def page_view(**kwargs: Any) -> Any: