ó
P'—^c           @@  s®   d  Z  d d l m Z d d l Z d d l m Z d d l m Z m Z m	 Z	 d d l
 m Z d d l m Z d	 d
 g Z e e ƒ Z e j Z d e d „ Z d d „ Z d S(   sT   
celery.worker.loop
~~~~~~~~~~~~~~~~~~

The consumers highly-optimized inner loop.

i    (   t   absolute_importN(   t   RUN(   t   WorkerShutdownt   WorkerTerminatet   WorkerLostError(   t
   get_loggeri   (   t   statet   asynloopt   synloopg       @c
         C@  sÒ  | j  }
 | j } | j } | j ƒ  } |  j ƒ  } | r\ | j r\ | j | | | | ƒ n  | g | _ | j ƒ  |  j	 ƒ  |  j
 j | ƒ |  j | ƒ |  j rÂ |  j j ƒ  rÂ t d ƒ ‚ n  | j j d k rç | j | j ƒ n  | | _ | j ƒ  } z— x | j |	 k r‘|  j r‘t j r/t ƒ  ‚ n t j rDt ƒ  ‚ n  | j | j k r`|
 ƒ  n  y t | ƒ Wqt k
 r| j ƒ  } qXqWWd y | j  ƒ  Wn& t! k
 rÌ} t" d | d d ƒn XXd S(   sb   Non-blocking event loop consuming messages until connection is lost,
    or shutdown is requested.s    Could not start worker processest   amqpNs&   Error cleaning up after event loop: %rt   exc_infoi   (#   t   updatet   heartbeat_checkt   connection_errorst   get_heartbeat_intervalt   create_task_handlert   supports_heartbeatst   call_repeatedlyt	   callbackst   consumet   on_readyt
   controllert   register_with_event_loopt   restart_countt   poolt   did_start_okR   t	   transportt   driver_typet	   call_soont   drain_eventst   propagate_errorst   create_loopR   t
   connectiont   should_stopR   t   should_terminateR   t   prevt   valuet   nextt   StopIterationt   resett	   Exceptiont   error(   t   objR    t   consumert	   blueprintt   hubt   qost	   heartbeatt   clockt   hbrateR   t
   update_qost   hbtickt   errorst   on_task_receivedt   loopt   exc(    (    s5   /tmp/pip-unpacked-wheel-gV1wwp/celery/worker/loops.pyR      sF    			

			
c	         K@  sÌ   |  j  ƒ  }
 | j |
 ƒ | j ƒ  |  j ƒ  x˜ | j t k rÇ |  j rÇ t j ƒ  | j | j	 k rq | j
 ƒ  n  y | j d d ƒ Wq0 t j k
 r› q0 t j k
 rÃ | j t k rÄ ‚  qÄ q0 Xq0 Wd S(   sE   Fallback blocking event loop for transports that doesn't support AIO.t   timeoutg       @N(   R   t   register_callbackR   R   R   R   R    t   maybe_shutdownR#   R$   R   R   t   socketR8   R)   (   R*   R    R+   R,   R-   R.   R/   R0   R1   t   kwargsR5   (    (    s5   /tmp/pip-unpacked-wheel-gV1wwp/celery/worker/loops.pyR   X   s    


(   t   __doc__t
   __future__R    R;   t   celery.bootstepsR   t   celery.exceptionsR   R   R   t   celery.utils.logR   t    R   t   __all__t   __name__t   loggerR)   R   R   (    (    (    s5   /tmp/pip-unpacked-wheel-gV1wwp/celery/worker/loops.pyt   <module>   s   	@