| 
					
				 | 
			
			
				@@ -157,19 +157,21 @@ class AMQPBackend(BaseDictBackend): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         with self.app.pool.acquire_channel(block=True) as (_, channel): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             binding = self._create_binding(task_id)(channel) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             binding.declare() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            latest, acc = None, None 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for i in xrange(backlog_limit): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                latest, acc = acc, binding.get(no_ack=True) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            prev = latest = acc = None 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for i in xrange(backlog_limit):  ## spool ffwd 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                prev, latest, acc = latest, acc, binding.get(no_ack=False) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if not acc:  # no more messages 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     break 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if prev: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    # backends are not expected to keep history, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    # so we delete everything except the most recent state. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    prev.ack() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 raise self.BacklogLimitExceeded(task_id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if latest: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                # new state to report 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                self._republish(channel, task_id, latest.body, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                latest.content_type, latest.content_encoding) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 payload = self._cache[task_id] = latest.payload 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                latest.requeue() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 return payload 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 # no new state, use previous 
			 |