|
@@ -167,11 +167,15 @@ class TaskProducer(Producer):
|
|
|
retry = False
|
|
|
retry_policy = None
|
|
|
utc = True
|
|
|
+ event_dispatcher = None
|
|
|
+ send_sent_event = False
|
|
|
|
|
|
def __init__(self, channel=None, exchange=None, *args, **kwargs):
|
|
|
self.retry = kwargs.pop('retry', self.retry)
|
|
|
self.retry_policy = kwargs.pop('retry_policy',
|
|
|
self.retry_policy or {})
|
|
|
+ self.send_sent_event = kwargs.pop('send_sent_event',
|
|
|
+ self.send_sent_event)
|
|
|
exchange = exchange or self.exchange
|
|
|
self.queues = self.app.amqp.queues
|
|
|
self.default_queue = self.app.amqp.default_queue
|
|
@@ -246,25 +250,36 @@ class TaskProducer(Producer):
|
|
|
)
|
|
|
|
|
|
signals.task_sent.send(sender=task_name, **body)
|
|
|
- if event_dispatcher:
|
|
|
+ if self.send_sent_event:
|
|
|
+ evd = event_dispatcher or self.event_dispatcher
|
|
|
exname = exchange or self.exchange
|
|
|
if isinstance(exname, Exchange):
|
|
|
exname = exname.name
|
|
|
- event_dispatcher.send(
|
|
|
- 'task-sent', uuid=task_id,
|
|
|
- name=task_name,
|
|
|
- args=safe_repr(task_args),
|
|
|
- kwargs=safe_repr(task_kwargs),
|
|
|
- retries=retries,
|
|
|
- eta=eta,
|
|
|
- expires=expires,
|
|
|
- queue=qname,
|
|
|
- exchange=exname,
|
|
|
- routing_key=routing_key,
|
|
|
+ evd.publish(
|
|
|
+ 'task-sent',
|
|
|
+ {
|
|
|
+ 'uuid': task_id,
|
|
|
+ 'name': task_name,
|
|
|
+ 'args': safe_repr(task_args),
|
|
|
+ 'kwargs': safe_repr(task_kwargs),
|
|
|
+ 'retries': retries,
|
|
|
+ 'eta': eta,
|
|
|
+ 'expires': expires,
|
|
|
+ 'queue': qname,
|
|
|
+ 'exchange': exname,
|
|
|
+ 'routing_key': routing_key,
|
|
|
+ },
|
|
|
+ self, retry=retry, retry_policy=retry_policy,
|
|
|
)
|
|
|
return task_id
|
|
|
delay_task = publish_task
|
|
|
|
|
|
+ @cached_property
|
|
|
+ def event_dispatcher(self):
|
|
|
+
|
|
|
+
|
|
|
+ return self.app.events.Dispatcher(enabled=False)
|
|
|
+
|
|
|
|
|
|
class TaskPublisher(TaskProducer):
|
|
|
"""Deprecated version of :class:`TaskProducer`."""
|
|
@@ -358,6 +373,7 @@ class AMQP(object):
|
|
|
compression=conf.CELERY_MESSAGE_COMPRESSION,
|
|
|
retry=conf.CELERY_TASK_PUBLISH_RETRY,
|
|
|
retry_policy=conf.CELERY_TASK_PUBLISH_RETRY_POLICY,
|
|
|
+ send_sent_event=conf.CELERY_SEND_TASK_SENT_EVENT,
|
|
|
utc=conf.CELERY_ENABLE_UTC,
|
|
|
)
|
|
|
TaskPublisher = TaskProducer
|