|  | @@ -84,6 +84,7 @@ from time import sleep
 | 
	
		
			
				|  |  |  from Queue import Empty
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  from kombu.utils.encoding import safe_repr
 | 
	
		
			
				|  |  | +from kombu.utils.eventio import READ, WRITE, ERR
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  from celery.app import app_or_default
 | 
	
		
			
				|  |  |  from celery.datastructures import AttributeDict
 | 
	
	
		
			
				|  | @@ -370,7 +371,7 @@ class Consumer(object):
 | 
	
		
			
				|  |  |              qos = self.qos
 | 
	
		
			
				|  |  |              update_qos = qos.update
 | 
	
		
			
				|  |  |              update_readers = hub.update_readers
 | 
	
		
			
				|  |  | -            fdmap = hub.fdmap
 | 
	
		
			
				|  |  | +            readers, writers = hub.readers, hub.writers
 | 
	
		
			
				|  |  |              poll = hub.poller.poll
 | 
	
		
			
				|  |  |              fire_timers = hub.fire_timers
 | 
	
		
			
				|  |  |              scheduled = hub.timer._queue
 | 
	
	
		
			
				|  | @@ -431,12 +432,18 @@ class Consumer(object):
 | 
	
		
			
				|  |  |                      update_qos()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  update_readers(on_poll_start())
 | 
	
		
			
				|  |  | -                if fdmap:
 | 
	
		
			
				|  |  | +                if readers or writers:
 | 
	
		
			
				|  |  |                      connection.more_to_read = True
 | 
	
		
			
				|  |  |                      while connection.more_to_read:
 | 
	
		
			
				|  |  |                          for fileno, event in poll(time_to_sleep) or ():
 | 
	
		
			
				|  |  |                              try:
 | 
	
		
			
				|  |  | -                                fdmap[fileno](fileno, event)
 | 
	
		
			
				|  |  | +                                if event & READ:
 | 
	
		
			
				|  |  | +                                    readers[fileno](fileno, event)
 | 
	
		
			
				|  |  | +                                if event & WRITE:
 | 
	
		
			
				|  |  | +                                    writers[fileno](fileno, event)
 | 
	
		
			
				|  |  | +                                if event & ERR:
 | 
	
		
			
				|  |  | +                                    readers[fileno](fileno, event)
 | 
	
		
			
				|  |  | +                                    writers[fileno](fileno, event)
 | 
	
		
			
				|  |  |                              except Empty:
 | 
	
		
			
				|  |  |                                  break
 | 
	
		
			
				|  |  |                              except socket.error:
 |