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. A timestamp 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 is None, all events will be sent. Example groups include "task" and "worker".

  • enabled (bool) – Set to False to not actually publish any events, making send() 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
close()[source]

Close the event dispatcher.

disable()[source]
enable()[source]
extend_buffer(other)[source]

Copy the outbound buffer of another instance.

flush(errors=True, groups=True)[source]

Flush the outbound buffer.

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 via KeyboardInterrupt or SystemExit.

property connection
event_from_message(body, localize=True, now=<built-in function time>, tzfields=operator.itemgetter('utcoffset', 'timestamp'), adjust_timestamp=<function adjust_timestamp>, CLIENT_CLOCK_SKEW=-1)[source]
get_consumers(Consumer, channel)[source]
itercapture(limit=None, timeout=None, wakeup=True)[source]
on_consume_ready(connection, channel, consumers, wakeup=True, **kwargs)[source]
process(type, event)[source]

Process event by dispatching to configured handler.

wakeup_workers(channel=None)[source]
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).

celery.events.group_from(type)[source]

Get the group part of an event type name.

Example

>>> group_from('task-sent')
'task'
>>> group_from('custom-my-event')
'custom'