def get_arg_obj(idx_or_key): if isinstance(idx_or_key, str): obj_id = kwargs[idx_or_key] else: obj_id = args_as_list[idx_or_key] if obj_id in cache: logger.debug('Get {} (arg {}) from cache'.format( obj_id, idx_or_key)) obj = cache[obj_id] else: logger.debug('Get {} (arg {}) from storage'.format( obj_id, idx_or_key)) storage = Storage() obj_bin = storage.get_cloudobject(obj_id) obj = pickle.loads(obj_bin) cache[obj_id] = obj if isinstance(idx_or_key, str): kwargs[idx_or_key] = obj else: args_as_list[idx_or_key] = obj
def load_cobj(storage: Storage, cobj): try: return deserialize(storage.get_cloudobject(cobj)) except Exception: logger.error(f'Failed to deserialize {cobj}') raise