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


Utilities for safely pickling exceptions.

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

Wraps unpickleable exceptions.



>>> 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)[source]
celery.utils.serialization.subclass_exception(name, parent, module)[source]

Create new exception class.

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

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.
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.create_exception_cls(name, module, parent=None)[source]

Dynamically create an exception class.


Make sure exception is pickleable.

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

Get pickleable exception type.


Reverse of get_pickleable_exception().

celery.utils.serialization.strtobool(term, table={u'0': False, u'1': True, u'false': False, u'no': False, u'off': False, u'on': True, u'true': True, u'yes': True})[source]

Convert common terms for true/false to bool.

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