|  | @@ -10,7 +10,7 @@ import multiprocessing
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  from multiprocessing.pool import Pool, worker
 |  |  from multiprocessing.pool import Pool, worker
 | 
											
												
													
														|  |  from celery.datastructures import ExceptionInfo
 |  |  from celery.datastructures import ExceptionInfo
 | 
											
												
													
														|  | -from celery.utils import gen_unique_id
 |  | 
 | 
											
												
													
														|  | 
 |  | +from celery.utils import noop
 | 
											
												
													
														|  |  from functools import partial as curry
 |  |  from functools import partial as curry
 | 
											
												
													
														|  |  from operator import isNumberType
 |  |  from operator import isNumberType
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -222,7 +222,7 @@ class TaskPool(object):
 | 
											
												
													
														|  |                      dead_count))
 |  |                      dead_count))
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      def apply_async(self, target, args=None, kwargs=None, callbacks=None,
 |  |      def apply_async(self, target, args=None, kwargs=None, callbacks=None,
 | 
											
												
													
														|  | -            errbacks=None, on_ack=None, meta=None):
 |  | 
 | 
											
												
													
														|  | 
 |  | +            errbacks=None, on_ack=noop):
 | 
											
												
													
														|  |          """Equivalent of the :func:``apply`` built-in function.
 |  |          """Equivalent of the :func:``apply`` built-in function.
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          All ``callbacks`` and ``errbacks`` should complete immediately since
 |  |          All ``callbacks`` and ``errbacks`` should complete immediately since
 | 
											
										
											
												
													
														|  | @@ -233,11 +233,8 @@ class TaskPool(object):
 | 
											
												
													
														|  |          kwargs = kwargs or {}
 |  |          kwargs = kwargs or {}
 | 
											
												
													
														|  |          callbacks = callbacks or []
 |  |          callbacks = callbacks or []
 | 
											
												
													
														|  |          errbacks = errbacks or []
 |  |          errbacks = errbacks or []
 | 
											
												
													
														|  | -        meta = meta or {}
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -        on_return = curry(self.on_return, callbacks, errbacks,
 |  | 
 | 
											
												
													
														|  | -                          on_ack, meta)
 |  | 
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +        on_ready = curry(self.on_ready, callbacks, errbacks, on_ack)
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          self.logger.debug("TaskPool: Apply %s (args:%s kwargs:%s)" % (
 |  |          self.logger.debug("TaskPool: Apply %s (args:%s kwargs:%s)" % (
 | 
											
												
													
														|  |              target, args, kwargs))
 |  |              target, args, kwargs))
 | 
											
										
											
												
													
														|  | @@ -245,27 +242,18 @@ class TaskPool(object):
 | 
											
												
													
														|  |          self.replace_dead_workers()
 |  |          self.replace_dead_workers()
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          return self._pool.apply_async(target, args, kwargs,
 |  |          return self._pool.apply_async(target, args, kwargs,
 | 
											
												
													
														|  | -                                        callback=on_return)
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -    def on_return(self, callbacks, errbacks, on_ack, meta, ret_value):
 |  | 
 | 
											
												
													
														|  | -        """What to do when the process returns."""
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -        # Acknowledge the task as being processed.
 |  | 
 | 
											
												
													
														|  | -        if on_ack:
 |  | 
 | 
											
												
													
														|  | -            on_ack()
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -        self.on_ready(callbacks, errbacks, meta, ret_value)
 |  | 
 | 
											
												
													
														|  | 
 |  | +                                        callback=on_ready)
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -    def on_ready(self, callbacks, errbacks, meta, ret_value):
 |  | 
 | 
											
												
													
														|  | 
 |  | +    def on_ready(self, callbacks, errbacks, on_ack, ret_value):
 | 
											
												
													
														|  |          """What to do when a worker task is ready and its return value has
 |  |          """What to do when a worker task is ready and its return value has
 | 
											
												
													
														|  |          been collected."""
 |  |          been collected."""
 | 
											
												
													
														|  | 
 |  | +        # Acknowledge the task as being processed.
 | 
											
												
													
														|  | 
 |  | +        on_ack()
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          if isinstance(ret_value, ExceptionInfo):
 |  |          if isinstance(ret_value, ExceptionInfo):
 | 
											
												
													
														|  |              if isinstance(ret_value.exception, (
 |  |              if isinstance(ret_value.exception, (
 | 
											
												
													
														|  |                      SystemExit, KeyboardInterrupt)):
 |  |                      SystemExit, KeyboardInterrupt)):
 | 
											
												
													
														|  |                  raise ret_value.exception
 |  |                  raise ret_value.exception
 | 
											
												
													
														|  | -            for errback in errbacks:
 |  | 
 | 
											
												
													
														|  | -                errback(ret_value, meta)
 |  | 
 | 
											
												
													
														|  | 
 |  | +            [errback(ret_value) for errback in errbacks]
 | 
											
												
													
														|  |          else:
 |  |          else:
 | 
											
												
													
														|  | -            for callback in callbacks:
 |  | 
 | 
											
												
													
														|  | -                callback(ret_value, meta)
 |  | 
 | 
											
												
													
														|  | 
 |  | +            [callback(ret_value) for callback in callbacks]
 |