fastapi-cache icon indicating copy to clipboard operation
fastapi-cache copied to clipboard

[BUG]: passing `ORJSONResponse` double encodes the response

Open jjfantini opened this issue 1 year ago • 1 comments

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

jjfantini avatar Jul 26 '24 20:07 jjfantini