This document describes the current stable version of Celery (5.6). For development docs, go here.

# `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.

  Parameters:

    - exc_module (str) – See `exc_module`.

    - exc_cls_name (str) – See `exc_cls_name`.

    - exc_args (Tuple[Any, ...]) – See `exc_args`.

  Example

      >>> def pickle_it(raising_function):
      ...     try:
      ...         raising_function()
      ...     except Exception as e:
      ...         exc = UnpickleableExceptionWrapper(
      ...             e.__class__.__module__,
      ...             e.__class__.__name__,
      ...             e.args,
      ...         )
      ...         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.create_exception_cls(name, module, parent=None)

  Dynamically create an exception class.

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

  Find first pickleable exception base class.

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

  Parameters:

    - exc (BaseException) – An exception instance.

    - loads – decoder to use.

    - dumps – encoder to use

  Returns:

    Nearest pickleable parent exception class

      (except `Exception` and parents), or if the exception is pickleable it will return `None`.

  Return type:

    Exception

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

  Get pickleable exception type.

celery.utils.serialization.get_pickleable_exception(exc)

  Make sure exception is pickleable.

celery.utils.serialization.get_pickled_exception(exc)

  Reverse of `get_pickleable_exception()`.

celery.utils.serialization.strtobool(term, table=None)

  Convert common terms for true/false to bool.

  Examples (true/false/yes/no/on/off/1/0).

celery.utils.serialization.subclass_exception(name, parent, module)

  Create new exception class.