1 Commits

  • perf: optional orjson JSON codec behind ENABLE_ORJSON (#27583)
    Swap the JSON encoder/decoder used across the backend from stdlib json to
    orjson when ENABLE_ORJSON is set — HTTP request bodies, JSONResponse
    bodies, upstream provider responses, SSE chunks, and socket.io/Redis
    payloads.
    
    The flag defaults to off, in which case the app uses stdlib json and
    engineio's codec verbatim, so default behaviour is unchanged.
    
    - json_codec exports JSONCodec (stdlib json or the orjson codec) and
      SOCKETIO_JSON (engineio's codec or the orjson codec); call sites import
      JSONCodec and stay implementation-agnostic
    - apply_orjson_http_json() is a no-op when the flag is off, leaving
      starlette's Request.json / JSONResponse.render untouched
    - the orjson codec falls back to the stdlib for inputs orjson rejects
      (non-str dict keys, ints beyond 64 bits, NaN literals)
    - orjson is imported only when the flag is on
    - FastAPI(default_response_class=...) is deliberately not used: an
      explicit default disables the Pydantic direct-to-bytes fast path for
      response_model routes