
    h                         d Z ddl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Z ee      Zdd	Zdd
Z	 ddZ	 ddZy)z*The consumers highly-optimized inner loop.    N)	bootsteps)WorkerLostError)
get_logger   )state)asynloopsynloopc                     	 | j                  |       y # t        $ r2}t        |dd       }||t        j                  k7  r Y d }~y Y d }~y d }~ww xY w)Ntimeouterrno)drain_events	Exceptiongetattrr   EAGAIN)
connectionr   exc	exc_errnos       O/var/www/Befach/backend/env/lib/python3.12/site-packages/celery/worker/loops.py_quick_drainr      sR    0 C$/	 Y%,,%> &? s    	A#AAc                     d gsS j                         }|rj                  sS fd}| j                  ||z  ||f       S )Nc                 `    	 j                  |        y # t        $ r}|d<   Y d }~y d }~ww xY w)Nr   )heartbeat_checkr   )rateer   heartbeat_errors     r   tickz#_enable_amqheartbeats.<locals>.tick&   s2    	#&&t, 	# "#OA	#s    	-(-)get_heartbeat_intervalsupports_heartbeatscall_repeatedly)timerr   r   	heartbeatr   r   s    `   @r   _enable_amqheartbeatsr#      sX    fO113I*88# 
)d*D4':    c	                 x   t         j                  }	|j                  }
|j                  }| j	                         }t        |j                  ||      }||_        | j                  j                  |       | j                  |       |j                          | j                          | j                  s%| j                  j                         st        d      |j                   j"                  dk(  r|j%                  t&        |       ||_        |j+                         }	 |j,                  |	k(  rr| j.                  rft-        j0                          |d   |d   |j2                  |j4                  k7  r |
        	 t7        |       |j,                  |	k(  r| j.                  rf	 |j;                          y# t8        $ r |j+                         }Y Iw xY w# t<        $ r }t>        jA                  d|       Y d}~yd}~ww xY w# 	 |j;                          w # t<        $ r }t>        jA                  d|       Y d}~w d}~ww xY wxY w)zNon-blocking event loop.r   z Could not start worker processesamqpr   Nz&Error cleaning up after event loop: %r)!r   RUNupdateconnection_errorscreate_task_handlerr#   r!   
on_message
controllerregister_with_event_loopconsumeon_readyrestart_countpooldid_start_okr   	transportdriver_type	call_soonr   propagate_errorscreate_loopr   r   maybe_shutdownprevvaluenextStopIterationresetr   logger	exception)objr   consumer	blueprinthubqosr"   clockhbrater(   
update_qoserrorson_task_receivedr   loopr   s                   r   r   r   2   s    --CJ))F..0+CIIzOO*HNN++C0  %LLN
 SXX%:%:%<@AA
 ''61lJ/ "C??D?oo$  "q!-%a((
 xx399$)T
 oo$ 	?IIK	 ! )()
  	?8#? ?	?	?IIK 	?8#? ?	?ss   AG: 6F/ G: G /GG: 
GG: 	G7G22G7:H9<HH9	H6H1,H91H66H9c	                    t         j                  | j                         }
| j                  dgt	        | j
                  dd      rt        | j                  |      |
|_        |j                          | j                          fd}j                  k(  rG| j                  r:	 t        j                           |        j                  k(  r| j                  r8yyyy#  |        w xY w)zEFallback blocking event loop for transports that doesn't support AIO.Nis_greenFr&   c                     d   d   j                   j                  k7  rj                          	          j                  d       y# t        j
                  $ r Y yt        $ r j                   k(  r Y yw xY w)zC
        Perform one iteration of the blocking event loop.
        r   N       @r   )r:   r;   r)   r   socketr   OSErrorr   )r(   rC   r   r   perform_pending_operationsrE   s   r   _loop_cyclezsynloop.<locals>._loop_cyclez   s     1)!!$$88syy JJL	&(##C#0~~ 	 	#% &	s   A B %B ?B )r   r(   r+   rR   r   r2   r#   r!   r,   r/   r0   r   r   r9   )rA   r   rB   rC   rD   rE   r"   rF   rG   kwargsrJ   rS   r(   r   rR   s    ` ` `      @@@r   r	   r	   l   s     --C..0!$!?!?fOsxxU+/		:FS*HLLN " //S
 S^^	  "M	 //S
 S^^
 ^
  Ms   2C- -	C6)g?)rO   )__doc__r   rP   celeryr   celery.exceptionsr   celery.utils.logr    r   __all____name__r?   r   r#   r   r	    r$   r   <module>r]      sJ    0    - ' 
!
 
H	. '*7?v &)#r$   