
    >iQ                         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/html/wine-match-dev/backend/winematch-backend/venv/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                          |j                  |
k(  r| j                  rt        j                          |d   |d   |j                  |j                  k7  r|j!                          	  |        |j#                  d       |j                  |
k(  r| j                  r}yyyy# t$        j&                  $ r Y 5t(        $ r |j                  |
k(  r Y Ow xY w)zEFallback blocking event loop for transports that doesn't support AIO.Nis_greenFr&   r          @r   )r   r(   r+   perform_pending_operationsr   r2   r#   r!   r,   r/   r0   r   r   r9   r:   r;   r)   r   socketr   OSError)rA   r   rB   rC   rD   rE   r"   rF   rG   kwargsr(   rJ   rO   r   s                 r   r	   r	   l   s'    --C..0!$!?!?fOsxxU+/		:FS*HLLN
//S
 S^^1)!!$$88syy JJL	&(##C#0 //S
 S^^
 ^
  ~~ 	 	#% &	s   )D" "E7EE)g?)rN   )__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$   