Skip to content

[BUG]: passing ORJSONResponse double encodes the response #436

Open

Description

@jjfantini

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

Activity

  1. vicchi commented on Nov 9, 2024

    @vicchi
    Collaborator

    @jjfantini Can you knock up a reproducible test case for this please?

  2. added
    bugSomething isn't working
    help wantedExtra attention is needed
    on Nov 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workinghelp wantedExtra attention is neededneeds-triageNeeds to be reviewed

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions