Fix #6628 - JSONDecodeError are not deserializable #6629
Merged
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.
See issue #6628 for full bug-report
requests.exceptions.JSONDecodeError are not deserializable: calling
pickle.dumpsfollowed bypickle.loadswill trigger an error.This is particularly a problem in a process pool, as an attempt to decode json on an invalid json document will result in the entire process pool crashing.
This is due to the MRO of the
requests.exceptions.JSONDecodeErrorclass: the__reduce__method called when pickling an instance is not the one from the JSON library parent: two out of three args expected for instantiation will be dropped, and the instance can't be deserialised.By specifying in the class which parent
__reduce__method should be called, the bug is fixed as all args are carried over in the resulting pickled bytes.