From 3c29f0f97c0335032ee0e6059e7998ba073dc438 Mon Sep 17 00:00:00 2001 From: Noah Klein Date: Sat, 24 Aug 2024 22:51:17 +0000 Subject: [PATCH] Continue patch from #5122 by not limiting response model validation --- fastapi/routing.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/fastapi/routing.py b/fastapi/routing.py index 49f1b6013..a78bfc0bc 100644 --- a/fastapi/routing.py +++ b/fastapi/routing.py @@ -20,6 +20,9 @@ from typing import ( Type, Union, ) +import anyio +from anyio import CapacityLimiter +import functools from fastapi import params from fastapi._compat import ( @@ -163,9 +166,10 @@ async def serialize_response( if is_coroutine: value, errors_ = field.validate(response_content, {}, loc=("response",)) else: - value, errors_ = await run_in_threadpool( - field.validate, response_content, {}, loc=("response",) - ) + # Run without a capacity limit for similar reasons as marked in fastapi/concurrency.py + exit_limiter = CapacityLimiter(1) + validate_func = functools.partial(field.validate, loc=("response",)) + value, errors_ = await anyio.to_thread.run_sync(validate_func, response_content, {}, limiter=exit_limiter) if isinstance(errors_, list): errors.extend(errors_) elif errors_: