|  | @@ -72,6 +72,10 @@ class WorkerTaskTrace(TaskTrace):
 | 
	
		
			
				|  |  |          self.loader = kwargs.pop("loader", current_loader)
 | 
	
		
			
				|  |  |          super(WorkerTaskTrace, self).__init__(*args, **kwargs)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        self._store_errors = True
 | 
	
		
			
				|  |  | +        if self.task.ignore_result:
 | 
	
		
			
				|  |  | +            self._store_errors = conf.STORE_ERRORS_EVEN_IF_IGNORED
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      def execute_safe(self, *args, **kwargs):
 | 
	
		
			
				|  |  |          try:
 | 
	
		
			
				|  |  |              return self.execute(*args, **kwargs)
 | 
	
	
		
			
				|  | @@ -105,7 +109,8 @@ class WorkerTaskTrace(TaskTrace):
 | 
	
		
			
				|  |  |      def handle_retry(self, exc, type_, tb, strtb):
 | 
	
		
			
				|  |  |          """Handle retry exception."""
 | 
	
		
			
				|  |  |          message, orig_exc = exc.args
 | 
	
		
			
				|  |  | -        self.task.backend.mark_as_retry(self.task_id, orig_exc, strtb)
 | 
	
		
			
				|  |  | +        if self._store_errors:
 | 
	
		
			
				|  |  | +            self.task.backend.mark_as_retry(self.task_id, orig_exc, strtb)
 | 
	
		
			
				|  |  |          return super(WorkerTaskTrace, self).handle_retry(exc, type_,
 | 
	
		
			
				|  |  |                                                           tb, strtb)
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -113,8 +118,9 @@ class WorkerTaskTrace(TaskTrace):
 | 
	
		
			
				|  |  |          """Handle exception."""
 | 
	
		
			
				|  |  |          # mark_as_failure returns an exception that is guaranteed to
 | 
	
		
			
				|  |  |          # be pickleable.
 | 
	
		
			
				|  |  | -        stored_exc = self.task.backend.mark_as_failure(self.task_id,
 | 
	
		
			
				|  |  | -                                                       exc, strtb)
 | 
	
		
			
				|  |  | +        if self._store_errors:
 | 
	
		
			
				|  |  | +            stored_exc = self.task.backend.mark_as_failure(self.task_id,
 | 
	
		
			
				|  |  | +                                                           exc, strtb)
 | 
	
		
			
				|  |  |          return super(WorkerTaskTrace, self).handle_failure(
 | 
	
		
			
				|  |  |                  stored_exc, type_, tb, strtb)
 | 
	
		
			
				|  |  |  
 |