a
    xd                     @   s|   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
dZdddZdddZdddZdS )z*The consumers highly-optimized inner loop.    N)	bootsteps)WorkerLostError)
get_logger   )state)asynloopsynloop皙?c              
   C   sZ   z| j |d W nD tyT } z,t|dd }|d ur@|tjkr@ W Y d }~n
d }~0 0 d S )Ntimeouterrno)drain_events	Exceptiongetattrr   EAGAIN)
connectionr   excZ	exc_errno r   K/var/www/html/Ranjet/env/lib/python3.9/site-packages/celery/worker/loops.py_quick_drain   s    r          @c                 C   s4   |r0|j }| }|r0|jr0| || ||f d S )N)Zheartbeat_checkZget_heartbeat_intervalZsupports_heartbeatsZcall_repeatedly)timerr   rateZtick	heartbeatr   r   r   _enable_amqheartbeats   s
    
r   c	                 C   st  t j}	|j}
|j}|  }t|j||d ||_| j	| | 	| |
  |   | jsn| j sntd|jjdkr|t| ||_| }z|j|	kr| jrt  |j|jkr|
  zt| W q ty   | }Y q0 qW z|  W n2 ty* } zt d| W Y d}~n
d}~0 0 nBz|  W n2 tyl } zt d| W Y d}~n
d}~0 0 0 dS )zNon-blocking event loop.r   z Could not start worker processesZamqpz&Error cleaning up after event loop: %rN)!r   RUNupdateZconnection_errorscreate_task_handlerr   r   
on_message
controllerZregister_with_event_loopconsumeon_readyZrestart_countpoolZdid_start_okr   	transportZdriver_typeZ	call_soonr   Zpropagate_errorsZcreate_loopr   r   maybe_shutdownprevvaluenextStopIterationresetr   logger	exception)objr   consumer	blueprinthubqosr   clockhbrater   Z
update_qoserrorson_task_receivedZloopr   r   r   r   r   $   sJ    
r   c	                 K   s   t j}
|  }| j}t| jddr2t| j||d ||_|	  | 
  |j|
kr| jrt  |j|jkrt|  z|  |jdd W qH tjy   Y qH ty   |j|
kr Y qH0 qHdS )zEFallback blocking event loop for transports that doesn't support AIO.Zis_greenFr   r   r
   N)r   r   r   perform_pending_operationsr   r#   r   r   r   r!   r"   r   r   r%   r&   r'   r   r   socketr   OSError)r-   r   r.   r/   r0   r1   r   r2   r3   kwargsr   r5   r6   r   r   r   r   \   s(    
r   )r	   )r   )r   )r   )__doc__r   r7   Zceleryr   Zcelery.exceptionsr   Zcelery.utils.logr    r   __all____name__r+   r   r   r   r   r   r   r   r   <module>   s   
	
	 
9 