You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Serialize JSON responses directly to bytes with orjson.
Send multipart framing and payloads as separate ASGI body events.
Avoid concatenating multipart framing and encoded payloads into another response-sized allocation.
Add coverage for single-file, multi-file, and multipart responses.
Why
The current response path can materialize JSON as a string before encoding it again for the HTTP response. Multipart responses also concatenate framing and payload bytes, temporarily creating another large allocation.
Direct byte serialization and separate multipart events reduce these intermediate copies.
Impact
In a representative end-to-end partition API benchmark producing a 44.9 MB JSON response:
Peak process RSS decreased by 0.5 MiB.
Peak container memory decreased by 2.5 MiB.
Median latency changed by +1.5%, within observed benchmark noise.
A serializer-only benchmark showed an approximately 36% reduction in peak allocation, but this did not translate into a material end-to-end memory reduction for the tested request.
Risk
Switching JSON implementations can change byte-level formatting and handling of edge values. Clients consuming parsed JSON should be unaffected, but compatibility should be verified for non-standard numeric values and clients that expect byte-identical output.
No response-size limit is introduced.
Validation
uv lock --check — passed.
uv run pytest test_general/api/test_response_serialization.py -q — 3 passed.
uv run ruff check --select I prepline_general/api/general.py test_general/api/test_response_serialization.py — passed.
Next steps: Take a moment to review the security alert above. Review
the linked package source code to understand the potential risk. Ensure the
package is not malicious before proceeding. If you're unsure how to proceed,
reach out to your security team or ask the Socket team for help at
support@socket.dev.
Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.
Mark the package as acceptable risk. To ignore this alert only
in this pull request, reply with the comment
@SocketSecurity ignore pypi/orjson@3.11.9. You can
also ignore all packages with @SocketSecurity ignore-all.
To ignore an alert for all future pull requests, use Socket's Dashboard to
change the triage state of this alert.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
orjson.Why
The current response path can materialize JSON as a string before encoding it again for the HTTP response. Multipart responses also concatenate framing and payload bytes, temporarily creating another large allocation.
Direct byte serialization and separate multipart events reduce these intermediate copies.
Impact
In a representative end-to-end partition API benchmark producing a 44.9 MB JSON response:
A serializer-only benchmark showed an approximately 36% reduction in peak allocation, but this did not translate into a material end-to-end memory reduction for the tested request.
Risk
Switching JSON implementations can change byte-level formatting and handling of edge values. Clients consuming parsed JSON should be unaffected, but compatibility should be verified for non-standard numeric values and clients that expect byte-identical output.
No response-size limit is introduced.
Validation
uv lock --check— passed.uv run pytest test_general/api/test_response_serialization.py -q— 3 passed.uv run ruff check --select I prepline_general/api/general.py test_general/api/test_response_serialization.py— passed.