This document describes the current stable version of Celery (5.2). For development docs, go here.
celery.utils.objects
¶
Object related utilities, including introspection, etc.
-
class
celery.utils.objects.
FallbackContext
(provided, fallback, *fb_args, **fb_kwargs)[source]¶ Context workaround.
The built-in
@contextmanager
utility does not work well when wrapping other contexts, as the traceback is wrong when the wrapped context raises.This solves this problem and can be used instead of
@contextmanager
in this example:@contextmanager def connection_or_default_connection(connection=None): if connection: # user already has a connection, shouldn't close # after use yield connection else: # must've new connection, and also close the connection # after the block returns with create_new_connection() as connection: yield connection
This wrapper can be used instead for the above like this:
def connection_or_default_connection(connection=None): return FallbackContext(connection, create_new_connection)
-
class
celery.utils.objects.
getitem_property
(keypath, doc=None)[source]¶ Attribute -> dict key descriptor.
The target object must support
__getitem__
, and optionally__setitem__
.Example
>>> from collections import defaultdict
>>> class Me(dict): ... deep = defaultdict(dict) ... ... foo = _getitem_property('foo') ... deep_thing = _getitem_property('deep.thing')
>>> me = Me() >>> me.foo None
>>> me.foo = 10 >>> me.foo 10 >>> me['foo'] 10
>>> me.deep_thing = 42 >>> me.deep_thing 42 >>> me.deep defaultdict(<type 'dict'>, {'thing': 42})
-
celery.utils.objects.
mro_lookup
(cls, attr, stop=None, monkey_patched=None)[source]¶ Return the first node by MRO order that defines an attribute.
- Parameters
cls (Any) – Child class to traverse.
attr (str) – Name of attribute to find.
stop (Set[Any]) – A set of types that if reached will stop the search.
monkey_patched (Sequence) – Use one of the stop classes if the attributes module origin isn’t in this list. Used to detect monkey patched attributes.
- Returns
The attribute value, or
None
if not found.- Return type
Any