|  | @@ -21,7 +21,7 @@ from kombu.utils import cached_property
 | 
	
		
			
				|  |  |  from celery import current_app
 | 
	
		
			
				|  |  |  from celery import states
 | 
	
		
			
				|  |  |  from celery.__compat__ import class_property
 | 
	
		
			
				|  |  | -from celery.state import get_current_task
 | 
	
		
			
				|  |  | +from celery.state import get_current_task, _task_stack
 | 
	
		
			
				|  |  |  from celery.datastructures import ExceptionInfo
 | 
	
		
			
				|  |  |  from celery.exceptions import MaxRetriesExceededError, RetryTaskError
 | 
	
		
			
				|  |  |  from celery.result import EagerResult
 | 
	
	
		
			
				|  | @@ -369,7 +369,11 @@ class BaseTask(object):
 | 
	
		
			
				|  |  |          setattr(self, attr, meth)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def __call__(self, *args, **kwargs):
 | 
	
		
			
				|  |  | -        return self.run(*args, **kwargs)
 | 
	
		
			
				|  |  | +        _task_stack.push(self)
 | 
	
		
			
				|  |  | +        try:
 | 
	
		
			
				|  |  | +            return self.run(*args, **kwargs)
 | 
	
		
			
				|  |  | +        finally:
 | 
	
		
			
				|  |  | +            _task_stack.pop()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      # - tasks are pickled into the name of the task only, and the reciever
 | 
	
		
			
				|  |  |      # - simply grabs it from the local registry.
 |