From de6ee9ab4bc76ef0a3811c4625f3042d510481af Mon Sep 17 00:00:00 2001 From: psrok1 Date: Tue, 14 May 2024 17:41:31 +0200 Subject: [PATCH] Fix: simplify task deserialization, don't deserialize resources when orjson fails --- karton/core/backend.py | 8 ++------ karton/core/task.py | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/karton/core/backend.py b/karton/core/backend.py index 11aa3fa..6117adf 100644 --- a/karton/core/backend.py +++ b/karton/core/backend.py @@ -449,9 +449,7 @@ def get_tasks( chunk_size, ) return [ - Task.unserialize(task_data, backend=self) - if parse_resources - else Task.unserialize(task_data, parse_resources=False) + Task.unserialize(task_data, parse_resources=parse_resources) for chunk in keys for task_data in self.redis.mget(chunk) if task_data is not None @@ -465,9 +463,7 @@ def _iter_tasks( ) -> Iterator[Task]: for chunk in chunks_iter(task_keys, chunk_size): yield from ( - Task.unserialize(task_data, backend=self) - if parse_resources - else Task.unserialize(task_data, parse_resources=False) + Task.unserialize(task_data, parse_resources=parse_resources) for task_data in self.redis.mget(chunk) if task_data is not None ) diff --git a/karton/core/task.py b/karton/core/task.py index a54cc11..7fdf436 100644 --- a/karton/core/task.py +++ b/karton/core/task.py @@ -459,7 +459,7 @@ def unserialize_resources(value: Any) -> Any: task_data = orjson.loads(data) except orjson.JSONDecodeError: # fallback, in case orjson raises exception during loading - task_data = json.loads(data, object_hook=unserialize_resources) + task_data = json.loads(data) # Compatibility with Karton <5.2.0 headers_persistent_fallback = task_data["payload_persistent"].get(