From 413af5fbb1a9661924fa6e8c0f8de7657266ac1b Mon Sep 17 00:00:00 2001 From: Phil Lopreiato Date: Sat, 1 Jan 2022 16:08:58 -0500 Subject: [PATCH] base64 encode deferred payloads for better compatibility --- src/google/appengine/ext/deferred/deferred.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/google/appengine/ext/deferred/deferred.py b/src/google/appengine/ext/deferred/deferred.py index 9c29602..59eb758 100755 --- a/src/google/appengine/ext/deferred/deferred.py +++ b/src/google/appengine/ext/deferred/deferred.py @@ -107,7 +107,7 @@ def hello_world(): - +import base64 import http import logging import os @@ -159,7 +159,7 @@ def run(data): PermanentTaskFailure if an error occurred during unpickling the task. """ try: - func, args, kwds = pickle.loads(data) + func, args, kwds = pickle.loads(base64.b64decode(data)) except Exception as e: raise PermanentTaskFailure(e) else: @@ -265,10 +265,10 @@ def serialize(obj, *args, **kwargs): """ curried = _curry_callable(obj, *args, **kwargs) if os.environ.get("DEFERRED_USE_CROSS_COMPATIBLE_PICKLE_PROTOCOL", False): - protocol = 0 + protocol = 2 else: protocol = pickle.HIGHEST_PROTOCOL - return pickle.dumps(curried, protocol) + return base64.b64encode(pickle.dumps(curried, protocol)) def defer(obj, *args, **kwargs):