Ë
    —V.jÚ  ã                   ó(  — 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 jB                  e jD                  cZ!Z"d„ Z#d„ Z$ G d„ de«      Z%y)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                  «        | j                  j                  «        t        j                  j                  d«      xs d}|r#d|j                  «       v rd| j                   _        | j                   j%                  t'        t        j                  j                  d	d
«      xs d
«      |t)        t        j                  j                  dd«      «      t+        t        j                  j                  d«      «      |¬«       t        j                  j                  d«      rt-        j.                  | |«       n@| j1                  «        t3        | «       | j5                  «        | j6                  t,        _        d
dlm} | j<                  j?                  «       D ]!  \  }} |||| j                  || ¬«      |_         Œ# d
dl!m"} |jG                  «        t        jH                  jK                  d¬«       y)z™Pool 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          ú\C:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\celery/concurrency/prefork.pyr   r   &   s¶  € ô ×Ñ˜IÔ&Ü˜dÔ#Ü×Ñ×Ñœ_Ñ-Ü×Ñ×ÑÔ.Ñ/Ü×"Ñ" 9°xÕ@ð ‡J�J×ÑÔØ‡J�J×"Ñ"Ô$Ü�j‰j�n‰nÐ.Ó/Ò7°4€GÙ�4˜7Ÿ=™=›?Ñ*à %ˆ�‰ÔØ‡G�G‡M�M”#”b—j‘j—n‘nÐ%7¸Ó;Ò@¸qÓAØÜ”r—z‘z—~‘~Ð&;¸UÓCÓDÜ”b—j‘j—n‘nÐ%@ÓAÓBØ#ð	 ô %ô
 
‡z�z‡~�~Ð1Ô2ä×(Ñ(¨¨hÕ7à�‰ÔÜ˜ÔØ�‰ŒØ—z‘zŒŒå-Ø—i‘i—o‘oÖ'‰
ˆˆdÙ% d¨D°#·*±*¸hØ*-ô/ˆ�ð (õ 4Ø×ÑÔÜ×Ñ×$Ñ$¨DÐ$Õ1ó    c                 óH   — t         j                  j                  d| |¬«       y)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   s$   € ô
 ×#Ñ#×(Ñ(Ø˜ xð )õ rM   c                   ól   ‡ — 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                  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 «      | _        y )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Ñ%5°iÀÔ%F�×!Ò!Ø—Y‘Yð 	ð 8<·x²xˆD�H‰H�M‰M×3Ò3Øð 	ñ ð .¨¯
©
Ü*=Ü.@Ø.2Ø%*Ø1Cñ.ð !%§¡ñ.ð 	.ˆˆDŒJð Ÿ™ˆŒØŸ_™_ˆÔØŸ_™_ˆÔØ—F‘FˆŒ	Ø—h‘hˆŒÜ˜Q ¨Ó.ˆ�
rM   c                 óv   — | j                   j                  «        | j                   j                  t        «       y ©N)rb   Úrestartrc   r   ©rj   s    rL   ro   zTaskPool.restart}   s$   € Ø�
‰
×ÑÔØ�
‰
×ÑœtÕ$rM   c                 ó6   — | j                   j                  «       S rn   )rb   Údid_start_okrp   s    rL   rr   zTaskPool.did_start_ok�   s   € Ø�z‰z×&Ñ&Ó(Ð(rM   c                 ó^   — 	 | j                   j                  } ||«      S # t        $ r Y y w xY wrn   )rb   Úregister_with_event_loopÚAttributeError)rj   ÚloopÚregs      rL   rt   z!TaskPool.register_with_event_loop„   s6   € ð	Ø—*‘*×5Ñ5ˆCñ �4‹yÐøô ò 	Ùð	ús   ‚   	,«,c                 óÚ   — | j                   �_| j                   j                  t        t        fv r<| j                   j	                  «        | j                   j                  «        d| _         yyy)zGracefully stop the pool.N)rb   Ú_stater   r   ÚcloseÚjoinrp   s    rL   Úon_stopzTaskPool.on_stop‹   sO   € à�:‰:Ð! d§j¡j×&7Ñ&7¼CÄ¸<Ñ&GØ�J‰J×ÑÔØ�J‰J�O‰OÔØˆD�Jð 'HÐ!rM   c                 ó`   — | j                   �"| j                   j                  «        d| _         yy)zForce terminate the pool.N)rb   Ú	terminaterp   s    rL   Úon_terminatezTaskPool.on_terminate’   s(   € à�:‰:Ð!Ø�J‰J× Ñ Ô"ØˆD�Jð "rM   c                 óŽ   — | j                   �9| j                   j                  t        k(  r| j                   j                  «        y y y rn   )rb   ry   r   rz   rp   s    rL   Úon_closezTaskPool.on_close˜   s5   € Ø�:‰:Ð! d§j¡j×&7Ñ&7¼3Ò&>Ø�J‰J×ÑÕð '?Ð!rM   c           	      ó²  •— t        | j                  dd «      }t        ‰| �  «       }|j	                  | j
                  | j                  j                  D �cg c]  }|j                  ‘Œ c}| j                  j                  xs d| j                  | j                  j                  xs d| j                  j                  xs df|� |«       nddœ«       |S c c}w )NÚhuman_write_statszN/Ar   )zmax-concurrencyrU   zmax-tasks-per-childzput-guarded-by-semaphoreÚtimeoutsÚwrites)ri   rb   ÚsuperÚ	_get_infoÚupdatera   rO   Ú_maxtasksperchildÚputlocksÚsoft_timeoutÚtimeout)rj   Úwrite_statsÚinfoÚpÚ	__class__s       €rL   r‡   zTaskPool._get_infoœ   s·   ø€ Ü˜dŸj™jÐ*=¸tÓDˆÜ‰wÑ Ó"ˆØ�‰Ø#Ÿz™zØ)-¯©×)9Ò)9Ó:Ñ)9 A˜!Ÿ%›%Ð)9Ñ:Ø#'§:¡:×#?Ñ#?Ò#HÀ5Ø(,¯©ØŸ™×0Ñ0Ò5°AØŸ™×+Ñ+Ò0¨qð2à'2Ð'>‘k”mÀEñ
ô 	ð ˆùò ;s   ÁC
c                 ó.   — | j                   j                  S rn   )rb   Ú
_processesrp   s    rL   Únum_processeszTaskPool.num_processesª   s   € à�z‰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   \   sV   ø„ Ù.à€DØ€Là€NØ€Kò/ò0%ò)òòòòôð ñ%ó ô%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ß $Ý .ç %ß DÝ Ý ,Ý (Ý 'å à
C€ò€ñ
 Ø  ,Ð/Ñà �zÐá	�HÓ	€Ø—‘ §¡€€ˆò)2òXôP%ˆxõ P%rM   