I cannot pass a direct FastAPI response like JSON/ORJSONResponse as an output for the FastAPI route; when I do, the first response is correct, but then the first cache HIT is double encoded.
Setup
redis = await aioredis.Redis(
host="localhost",
port=6379,
db=1,
decode_responses=False,
)
FastAPICache.init(RedisBackend(redis), prefix="fastapi-cache")
The double encoded data comes if the return object is like:
return ORJSONResponse(content=result)
The result object is a list of dicts result = lf.collect().to_dicts(). This turns a LazyFrame into a list of dicts list[dict[str, Any]] .
If I pass the object directly then it works, but how can I pass the direct response, to bypass FastAPIs encoding or passing the custom ORJSONResponse so that the encoding engine uses orjson and not just json
I cannot pass a direct FastAPI response like
JSON/ORJSONResponseas an output for the FastAPI route; when I do, the first response is correct, but then the first cache HIT is double encoded.Setup
The double encoded data comes if the return object is like:
The result object is a list of dicts
result = lf.collect().to_dicts(). This turns a LazyFrame into a list of dictslist[dict[str, Any]].If I pass the object directly then it works, but how can I pass the direct response, to bypass FastAPIs encoding or passing the custom
ORJSONResponseso that the encoding engine usesorjsonand not justjson