@@ -40,6 +40,10 @@ def apply_async(task, args=None, kwargs=None, countdown=None, eta=None,
4040 :keyword exchange: The named exchange to send the task to. Defaults to
4141 :attr:`celery.task.base.Task.exchange`.
4242
43+ :keyword exchange_type: The exchange type to initalize the exchange as
44+ if not already declared.
45+ Defaults to :attr:`celery.task.base.Task.exchange_type`.
46+
4347 :keyword immediate: Request immediate delivery. Will raise an exception
4448 if the task cannot be routed to a worker immediately.
4549 (Do not confuse this parameter with the ``countdown`` and ``eta``
@@ -72,8 +76,10 @@ def apply_async(task, args=None, kwargs=None, countdown=None, eta=None,
7276 task = tasks [task .name ] # get instance from registry
7377 options = dict (extract_exec_options (task ), ** options )
7478 exchange = options .get ("exchange" )
79+ exchange_type = options .get ("exchange_type" )
7580
76- publish = publisher or task .get_publisher (connection , exchange = exchange )
81+ publish = publisher or task .get_publisher (connection , exchange = exchange ,
82+ exchange_type = exchange_type )
7783 try :
7884 task_id = publish .delay_task (task .name , args , kwargs , task_id = task_id ,
7985 countdown = countdown , eta = eta , ** options )
@@ -89,7 +95,10 @@ def send_task(name, args=None, kwargs=None, countdown=None, eta=None,
8995 result_cls = AsyncResult , ** options ):
9096
9197 exchange = options .get ("exchange" )
92- publish = publisher or TaskPublisher (connection , exchange = exchange )
98+ exchange_type = options .get ("exchange_type" )
99+
100+ publish = publisher or TaskPublisher (connection , exchange = exchange ,
101+ exchange_type = exchange_type )
93102 try :
94103 task_id = publish .delay_task (name , args , kwargs , task_id = task_id ,
95104 countdown = countdown , eta = eta , ** options )
0 commit comments