This document describes the current stable version of Celery (5.2). For development docs, go here.
celery.events
¶
Monitoring Event Receiver+Dispatcher.
Events is a stream of messages sent for certain actions occurring
in the worker (and clients if task_send_sent_event
is enabled), used for monitoring purposes.
- celery.events.Event(type, _fields=None, __dict__=<class 'dict'>, __now__=<built-in function time>, **fields)[source]¶
Create an event.
Notes
An event is simply a dictionary: the only required field is
type
. Atimestamp
field will be set to the current time if not provided.
- class celery.events.EventDispatcher(connection=None, hostname=None, enabled=True, channel=None, buffer_while_offline=True, app=None, serializer=None, groups=None, delivery_mode=1, buffer_group=None, buffer_limit=24, on_send_buffered=None)[source]¶
Dispatches event messages.
- Parameters:
connection (kombu.Connection) – Connection to the broker.
hostname (str) – Hostname to identify ourselves as, by default uses the hostname returned by
anon_nodename()
.groups (Sequence[str]) – List of groups to send events for.
send()
will ignore send requests to groups not in this list. If this isNone
, all events will be sent. Example groups include"task"
and"worker"
.enabled (bool) – Set to
False
to not actually publish any events, makingsend()
a no-op.channel (kombu.Channel) – Can be used instead of connection to specify an exact channel to use when sending events.
buffer_while_offline (bool) – If enabled events will be buffered while the connection is down.
flush()
must be called as soon as the connection is re-established.
Note
You need to
close()
this after use.- DISABLED_TRANSPORTS = {'sql'}¶
- app = None¶
- on_disabled = None¶
- on_enabled = None¶
- publish(type, fields, producer, blind=False, Event=<function Event>, **kwargs)[source]¶
Publish event using custom
Producer
.- Parameters:
type (str) – Event type name, with group separated by dash (-). fields: Dictionary of event fields, must be json serializable.
producer (kombu.Producer) – Producer instance to use: only the
publish
method will be called.retry (bool) – Retry in the event of connection failure.
retry_policy (Mapping) – Map of custom retry policy options. See
ensure()
.blind (bool) – Don’t set logical clock value (also don’t forward the internal logical clock).
Event (Callable) – Event type used to create event. Defaults to
Event()
.utcoffset (Callable) – Function returning the current utc offset in hours.
- property publisher¶
- send(type, blind=False, utcoffset=<function utcoffset>, retry=False, retry_policy=None, Event=<function Event>, **fields)[source]¶
Send event.
- Parameters:
type (str) – Event type name, with group separated by dash (-).
retry (bool) – Retry in the event of connection failure.
retry_policy (Mapping) – Map of custom retry policy options. See
ensure()
.blind (bool) – Don’t set logical clock value (also don’t forward the internal logical clock).
Event (Callable) – Event type used to create event, defaults to
Event()
.utcoffset (Callable) – unction returning the current utc offset in hours.
**fields (Any) – Event fields – must be json serializable.
- class celery.events.EventReceiver(channel, handlers=None, routing_key='#', node_id=None, app=None, queue_prefix=None, accept=None, queue_ttl=None, queue_expires=None)[source]¶
Capture events.
- Parameters:
connection (kombu.Connection) – Connection to the broker.
handlers (Mapping[Callable]) – Event handlers. This is a map of event type names and their handlers. The special handler “*” captures all events that don’t have a handler.
- app = None¶
- capture(limit=None, timeout=None, wakeup=True)[source]¶
Open up a consumer capturing events.
This has to run in the main process, and it will never stop unless
EventDispatcher.should_stop
is set to True, or forced viaKeyboardInterrupt
orSystemExit
.
- property connection¶
- celery.events.get_exchange(conn, name='celeryev')[source]¶
Get exchange used for sending events.
- Parameters:
conn (kombu.Connection) – Connection used for sending/receiving events.
name (str) – Name of the exchange. Default is
celeryev
.
Note
The event type changes if Redis is used as the transport (from topic -> fanout).