
    `f                     "   d Z ddlZddlmZ ddlmZmZ ddlmZm	Z	 ddlm
Z ddlmZmZ ddlmZ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Zh dZerdehZndhZ ee          Z e j!        e j"        cZ!Z"d Z#d Z$ G d de          Z%dS )zKPrefork execution pool.

Pool implementation using :mod:`multiprocessing`.
    N)forking_enable)REMAP_SIGTERMTERM_SIGNAME)CLOSERUN)Pool)	platformssignals)_set_task_join_will_blockset_default_app)trace)BasePool)noop)
get_logger   )AsynPool)TaskPoolprocess_initializerprocess_destructor>   SIGHUPSIGTERMSIGTTINSIGTTOUSIGUSR1SIGINTc           
         t          j        d           t          d           t          j        j        t
            t          j        j        t            t          j        d|           | j	        
                                 | j	                                         t          j                            d          pd}|r"d|                                v rd| j        _        | j                            t'          t          j                            d	d
          pd
          |t)          t          j                            dd                    t+          t          j                            d                    |           t          j                            d          rt-          j        | |           nH|                                  t3          |            |                                  | j        t,          _        d
dlm} | j                                        D ]\  }} |||| j	        ||           |_          d
dl!m"} |#                                 t          j$        %                    d           dS )zPool child process initializer.

    Initialize the child pool process to ensure the correct
    app instance is used and things like logging works.
    SIGKILLTceleryd)hostnameCELERY_LOG_FILENz%iFCELERY_LOG_LEVELr   CELERY_LOG_REDIRECTCELERY_LOG_REDIRECT_LEVELFORKED_BY_MULTIPROCESSING)build_tracer)app)state)sender)&r	   set_pdeathsigr   r
   resetWORKER_SIGRESETignoreWORKER_SIGIGNOREset_mp_process_titleloaderinit_workerinit_worker_processosenvirongetlowerlogalready_setupsetupintboolstrr   setup_worker_optimizationsset_currentr   finalize_taskscelery.app.tracer%   tasksitems	__trace__celery.workerr'   reset_stateworker_process_initsend)r&   r   logfiler%   nametaskworker_states          L/var/www/html/env/lib/python3.11/site-packages/celery/concurrency/prefork.pyr   r   &   s;    I&&&d###_--.//"9x@@@@ JJ""$$$jnn.//74G &47==??** %GMM#bjnn%7;;@qAArz~~&;UCCDDbjnn%@AABB#	  % % %
 
z~~122 "(h7777z------ioo'' / /
d%dD#*h*-/ / /333333$$D$11111    c                 J    t           j                            d| |           dS )z_Pool child process destructor.

    Dispatch the :signal:`worker_process_shutdown` signal.
    N)r(   pidexitcode)r
   worker_process_shutdownrG   )rO   rP   s     rL   r   r   R   s5    
 #((x )     rM   c                   r     e Zd ZdZeZeZdZdZd Z	d Z
d Zd Zd Zd	 Zd
 Z fdZed             Z xZS )r   z$Multiprocessing Pool implementation.TNc           
         t          | j                    | j                            dd          r| j        n| j        }| j        r| j        j        j        nd } |d| j        t          t          dd|d| j        x}| _        |j        | _        |j        | _        |j        | _        |j        | _        |j        | _        t%          |dd           | _        d S )NthreadsTF)	processesinitializeron_process_exitenable_timeoutssynackproc_alive_timeoutflush )r   optionsr4   BlockingPoolr   r&   confworker_proc_alive_timeoutlimitr   r   _poolapply_asyncon_applymaintain_poolterminate_jobgrowshrinkgetattrr[   )selfr   rZ   Ps       rL   on_startzTaskPool.on_starte   s    t*+++%)\%5%5i%F%F !!Y 	 8<x DHM33 	  .
*=.@.2%*1C. . !%. . 	.DJ __F	hQ..


rM   c                 v    | j                                          | j                             t                     d S N)rb   restartrc   r   rj   s    rL   ro   zTaskPool.restart}   s2    

t$$$$$rM   c                 4    | j                                         S rn   )rb   did_start_okrp   s    rL   rr   zTaskPool.did_start_ok   s    z&&(((rM   c                 V    	 | j         j        }n# t          $ r Y d S w xY w ||          S rn   )rb   register_with_event_loopAttributeError)rj   loopregs      rL   rt   z!TaskPool.register_with_event_loop   sC    	*5CC 	 	 	FF	s4yys    
c                     | j         U| j         j        t          t          fv r=| j                                          | j                                          d| _         dS dS dS )zGracefully stop the pool.N)rb   _stater   r   closejoinrp   s    rL   on_stopzTaskPool.on_stop   s\    :!dj&7C<&G&GJJOODJJJ "!&G&GrM   c                 X    | j         "| j                                          d| _         dS dS )zForce terminate the pool.N)rb   	terminaterp   s    rL   on_terminatezTaskPool.on_terminate   s1    :!J  """DJJJ "!rM   c                 x    | j         0| j         j        t          k    r| j                                          d S d S d S rn   )rb   ry   r   rz   rp   s    rL   on_closezTaskPool.on_close   sA    :!dj&73&>&>J "!&>&>rM   c           	      L   t          | j        dd           }t                                                      }|                    | j        d | j        j        D             | j        j        pd| j        | j        j        pd| j        j	        pdf|
 |            ndd           |S )Nhuman_write_statsc                     g | ]	}|j         
S r\   )rO   ).0ps     rL   
<listcomp>z&TaskPool._get_info.<locals>.<listcomp>   s    :::A!%:::rM   zN/Ar   )zmax-concurrencyrU   zmax-tasks-per-childzput-guarded-by-semaphoretimeoutswrites)
ri   rb   super	_get_infoupdatera   _maxtasksperchildputlockssoft_timeouttimeout)rj   write_statsinfo	__class__s      rL   r   zTaskPool._get_info   s    dj*=tDDww  ""#z::)9:::#':#?#H5(,05A+0q2'2'>kkmmmE
 
 	 	 	 rM   c                     | j         j        S rn   )rb   
_processesrp   s    rL   num_processeszTaskPool.num_processes   s    z$$rM   )__name__
__module____qualname____doc__r   r   r^   uses_semaphorer   rl   ro   rr   rt   r|   r   r   r   propertyr   __classcell__)r   s   @rL   r   r   \   s        ..DLNK/ / /0% % %) ) )             % % X% % % % %rM   r   )&r   r2   billiardr   billiard.commonr   r   billiard.poolr   r   r   r^   celeryr	   r
   celery._stater   r   
celery.appr   celery.concurrency.baser   celery.utils.functionalr   celery.utils.logr   asynpoolr   __all__r+   r-   r   loggerwarningdebugr   r   r   r\   rM   rL   <module>r      s    
			 # # # # # # 7 7 7 7 7 7 7 7 $ $ $ $ $ $ $ $ . . . . . . % % % % % % % % D D D D D D D D       , , , , , , ( ( ( ( ( ( ' ' ' ' ' '      
C  
  " ,/ z	H		)2 )2 )2X  P% P% P% P% P%x P% P% P% P% P%rM   