Added support for streaming multipart decoding#222
Open
tzickel wants to merge 1 commit intorequests:masterfrom
Open
Added support for streaming multipart decoding#222tzickel wants to merge 1 commit intorequests:masterfrom
tzickel wants to merge 1 commit intorequests:masterfrom
Conversation
0743890 to
9dd7f10
Compare
71bb640 to
2516b7b
Compare
Contributor
Author
|
https://gist.github.com/tzickel/4a81503acdb843dab4f03cfe950e84f3 This is a benchmark for this code that shows a potential use case for it. You can mess with the data size and chunk size in the end and see the time differences between the versions (peak memory measurement is much more tricky and depends on your OS). And in your use-case you might write the big part to disk instead of memory like here, and thus your peak memory usage by this code will be at max about the size of chunk_size. |
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
This is feature complete, and should parse the stream like the normal MultipartDecoder class (and passes it's tests).
Added benefits against the normal API is better memory and time savings on large inputs (if you can handle the data as a stream better than the normal code which reads all the stream chunks into memory, copies them together (then removes the chunks), then splits the data into parts (while still retaining the original copy inside the request itself, unless you explicitly delete the request directly after using MultipartDecoder)).