-
-
Notifications
You must be signed in to change notification settings - Fork 4.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Chunk Redis Backend Results when larger than 512MB #7912
Comments
Hey @ErikBZ 👋, We also offer priority support for our sponsors. |
do you have implementation detail in mind? also how does #7801 (comment) fits in this case? |
These subkeys would be where the chunks of the actual data are stored. During a GET, we'd check if the string value is prefixed by |
OK, so you are up for the implementation? |
Yup, sure am |
Ping me on the pr for review |
Are there any updates on this? It's being here for a while now |
we are still waiting for contributions |
Checklist
for similar or identical feature requests.
for existing proposed implementations of this feature.
to find out if the same feature was already implemented in the
master branch.
in this issue (If there are none, check this box anyway).
Related Issues and Possible Duplicates
Related Issues
Possible Duplicates
Brief Summary
Redis has a limit of 512MB for String values. While generating tasks, some may get larger than that limit resulting in a BackendStoreError #6533. In applications where a size larger than 512MB might be expected, we'd like to chunk the task down to manageable pieces and then coalesce the data when it's needed.
This is related to the other issue I posted, #7911, since we would be able to send the IDs of the chunked data and then merge the results later on when a worker has picked up the task.
Design
During a SET we'd use the same key as we normally would
celery-task-meta-561cb2b3-c43e-4944-9531-e1b37e84c33d
but the data saved to this key would instead be a list of sub-keys, prefixed byREDIS_CHUNK_KEYS
, followed by the ids of the chunks delimited by a,
. For exampleREDIS_CHUNK_KEYS,key1,key2
.These subkeys would be where the chunks of the actual data are stored.
During a GET, we'd check if the string value is prefixed by
REDIS_CHUNK_KEYS
. If it is then we'd parse the value, and then make another request for each of data chunks pointed to by the subkeys.Architectural Considerations
None
Proposed Behavior
Proposed UI/UX
Diagrams
N/A
Alternatives
None
The text was updated successfully, but these errors were encountered: