diff options
author | Babatunde Olusola <solababatunde12@gmail.com> | 2020-04-16 13:53:48 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-16 19:53:48 +0700 |
commit | e1cbc3736c55d7a72be121a170d1b8c811619dc2 (patch) | |
tree | 5c4a0a42ed68b110158d2255b3d0995afa15d25a /rq/serializers.py | |
parent | d914343e7c6b5f28e76840838ebc0e100d62e07a (diff) | |
download | rq-e1cbc3736c55d7a72be121a170d1b8c811619dc2.tar.gz |
Implement Customizable Serializer Support (#1219)
* Implement Customizable Serializer Support
* Refractor serializer instance methods
* Update tests with other serializers
* Edit function description
* Edit function description
* Raise appropriate exception
* Update tests for better code coverage
* Remove un-used imports and un-necessary code
* Refractor resolve_serializer
* Remove un-necessary alias from imports
* Add documentation
* Refractor tests, improve documentation
Diffstat (limited to 'rq/serializers.py')
-rw-r--r-- | rq/serializers.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/rq/serializers.py b/rq/serializers.py new file mode 100644 index 0000000..c4b0e54 --- /dev/null +++ b/rq/serializers.py @@ -0,0 +1,25 @@ +import pickle + +from .compat import string_types +from .utils import import_attribute + + +def resolve_serializer(serializer): + """This function checks the user defined serializer for ('dumps', 'loads') methods + It returns a default pickle serializer if not found else it returns a MySerializer + The returned serializer objects implement ('dumps', 'loads') methods + Also accepts a string path to serializer that will be loaded as the serializer + """ + if not serializer: + return pickle + + if isinstance(serializer, string_types): + serializer = import_attribute(serializer) + + default_serializer_methods = ('dumps', 'loads') + + for instance_method in default_serializer_methods: + if not hasattr(serializer, instance_method): + raise NotImplementedError('Serializer should have (dumps, loads) methods.') + + return serializer |