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

    Task execution strategy (optimization).

i    (   t   absolute_importN(   t   to_timestamp(   t	   safe_repr(   t
   get_logger(   t   timezonei   (   t   Request(   t   task_reservedt   defaultc   	      @  sæ   t  ‰  ˆ j ‰ ˆ j ‰ t j t j ƒ ‰ ˆ j ‰ ˆ o? ˆ j } ˆ j	 ‰ | oW ˆ j
 ‰ ˆ j j ‰ ˆ j ‰ ˆ j ‰ ˆ j j ‰	 ˆ j ‰
 ˆ j ‰ t ‡  ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡	 ‡
 ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ f d † } | S(   Nc         @  s  ˆ  | d | d | d ˆ d ˆ d ˆ d ˆ d ˆ d |  ƒ} | j  ƒ  rL d  Sˆ rb ˆ d	 | ƒ n  ˆ rê ˆ d
 d | j d | j d t | j ƒ d t | j ƒ d | j j d d ƒ d | j oË | j j	 ƒ  d | j
 oã | j
 j	 ƒ  ƒn  | j ržy: | j r| ˆ | j ƒ ƒ } n | | j t j ƒ } WnE t k
 rt} ˆ d | j | | j d t ƒ d t ƒ| j ƒ  qXˆ j j ƒ  ˆ | ˆ | f d d ƒne ˆ rÌˆ	 ˆ j ƒ }	 |	 rÌˆ | |	 d ƒ Sn  ˆ | ƒ | rùg  | D] }
 |
 ƒ  ^ qãn  ˆ
 | ƒ d  S(   Nt   on_ackt	   on_rejectt   appt   hostnamet   eventert   taskt   connection_errorst   messages   Received task: %ss   task-receivedt   uuidt   namet   argst   kwargst   retriesi    t   etat   expiress2   Couldn't convert eta %s to timestamp: %r. Task: %rt   safet   exc_infot   priorityi   i   (   t   revokedt   idR   R   R   R   t   request_dictt   getR   t	   isoformatR   t   utcR   t   localt   OverflowErrort   infot   Truet   acknowledget   qost   increment_eventually(   R   t   bodyt   ackt   rejectt	   callbacksR   t   reqR   t   exct   buckett   callback(   t   Reqt
   _does_infoR
   t   apply_eta_taskt   call_atR   t   consumert   errorR   t
   get_buckett   handleR   R"   t
   limit_taskt   rate_limits_enabledt
   send_eventR   R   t   task_sends_eventst   to_system_tz(    s8   /tmp/pip-unpacked-wheel-gV1wwp/celery/worker/strategy.pyt   task_message_handler1   sH    			"
(   R   R   R   t   loggert   isEnabledFort   loggingt   INFOt   event_dispatchert   enabledt   sendt   send_eventst   timerR2   R1   t   disable_rate_limitst   task_bucketst   __getitem__t   on_task_requestt   _limit_taskR   (	   R   R
   R3   R"   R4   R   R;   t   eventsR<   (    (   R/   R0   R
   R1   R2   R   R3   R4   R   R5   R6   R   R"   R7   R8   R9   R   R   R:   R;   s8   /tmp/pip-unpacked-wheel-gV1wwp/celery/worker/strategy.pyR      s     					
		K-(   t   __doc__t
   __future__R    R?   t   kombu.async.timerR   t   kombu.utils.encodingR   t   celery.utils.logR   t   celery.utils.timeutilsR   t   jobR   t   stateR   t   __all__t   __name__R=   R"   R4   t	   to_systemR   (    (    (    s8   /tmp/pip-unpacked-wheel-gV1wwp/celery/worker/strategy.pyt   <module>   s   	