celery.utils.serialization

celery.utils.serialization

Utilities for safely pickling exceptions.

exception celery.utils.serialization.UnpickleableExceptionWrapper(exc_module, exc_cls_name, exc_args, text=None)[源代码]

Wraps unpickleable exceptions.

参数:

Example

  1. >>> def pickle_it(raising_function):
  2. ... try:
  3. ... raising_function()
  4. ... except Exception as e:
  5. ... exc = UnpickleableExceptionWrapper(
  6. ... e.__class__.__module__,
  7. ... e.__class__.__name__,
  8. ... e.args,
  9. ... )
  10. ... pickle.dumps(exc) # Works fine.
  • exc_args = None

    The arguments for the original exception.

  • exc_cls_name = None

    The name of the original exception class.

  • exc_module = None

    The module of the original exception.

  • classmethod from_exception(exc)[源代码]

  • restore()[源代码]

celery.utils.serialization.subclass_exception(name, parent, module)[源代码]

celery.utils.serialization.find_pickleable_exception(exc, loads=<built-in function loads>, dumps=<built-in function dumps>)

With an exception instance, iterate over its super classes (by mro) and find the first super exception that is pickleable. It does not go below Exception (i.e. it skips Exception, BaseException and object). If that happens you should use UnpickleableException instead.

参数:exc – An exception instance.

Will return the nearest pickleable parent exception class (except Exception and parents), or if the exception is pickleable it will return None.

:rtype Exception:

celery.utils.serialization.create_exception_cls(name, module, parent=None)[源代码]

Dynamically create an exception class.

celery.utils.serialization.get_pickleable_exception(exc)[源代码]

Make sure exception is pickleable.

celery.utils.serialization.get_pickleable_etype(cls, loads=<built-in function loads>, dumps=<built-in function dumps>)

celery.utils.serialization.get_pickled_exception(exc)[源代码]

Get original exception from exception pickled using get_pickleable_exception().