HEX
Server: LiteSpeed
System: Linux kapuas.iixcp.rumahweb.net 5.14.0-427.42.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Nov 1 14:58:02 EDT 2024 x86_64
User: mirz4654 (1666)
PHP: 8.1.33
Disabled: system,exec,escapeshellarg,escapeshellcmd,passthru,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,shell_exec,popen,pclose,dl,pfsockopen,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setsid,posix_setuid,posix_setpgid,ini_alter,show_source,define_syslog_variables,symlink,syslog,openlog,openlog,closelog,ocinumcols,listen,chgrp,apache_note,apache_setenv,debugger_on,debugger_off,ftp_exec,dll,ftp,myshellexec,socket_bind,mail,posix_getwpuid
Upload Files
File: //usr/local/lib/python3.9/site-packages/celery/worker/__pycache__/worker.cpython-39.pyc
a

X>h�=�@s@dZddlZddlZddlmZmZddlmZddlmZddl	m
Z
ddlmZddlm
Zdd	lmZdd
lmZmZddlmZmZmZddlmZmZdd
lmZddlmZddlmZddl m!Z!m"Z"ddl#m$Z$ddl%m&Z&ddl'm(Z(zddl)Z)Wne*�ydZ)Yn0dZ+dZ,dZ-dZ.Gdd�d�Z/dS)a�WorkController can be used to instantiate in-process workers.

The command-line interface for the worker is in :mod:`celery.bin.worker`,
while the worker program is in :mod:`celery.apps.worker`.

The worker program is responsible for adding signal handlers,
setting up logging, etc.  This is a bare-bones worker without
global side-effects (i.e., except for the global state stored in
:mod:`celery.worker.state`).

The worker consists of several components, all managed by bootsteps
(mod:`celery.bootsteps`).
�N)�datetime�timezone)�sleep)�	cpu_count)�detect_environment)�	bootsteps)�concurrency)�signals)�RUN�	TERMINATE)�ImproperlyConfigured�TaskRevokedError�WorkerTerminate)�
EX_FAILURE�create_pidlock)�reload_from_cwd)�mlevel)�
worker_logger)�default_nodename�
worker_direct)�str_to_list)�default_socket_timeout���state)�WorkControllerg@z�
Trying to select queue subset of {0!r}, but queue {1} isn't
defined in the `task_queues` setting.

If you want to automatically declare unknown queues you can
enable the `task_create_missing_queues` setting.
ze
Trying to deselect queue subset of {0!r}, but queue {1} isn't
defined in the `task_queues` setting.
c@sZeZdZdZdZdZdZdZdZdZ	Gdd�de
j�ZdJdd�ZdKdd�Z
d	d
�Zdd�Zd
d�Zdd�Zdd�Zdd�Zdd�ZdLdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�ZdMd,d-�ZdNd.d/�Z dOd1d2�Z!dPd3d4�Z"dQd5d6�Z#dRd7d8�Z$d9d:�Z%d;d<�Z&d=d>�Z'd?d@�Z(dAdB�Z)e*dCdD��Z+dSdFdG�Z,dHdI�Z-dS)TrzUnmanaged worker instance.Nc@seZdZdZdZhd�ZdS)zWorkController.BlueprintzWorker bootstep blueprint.ZWorker>zcelery.worker.components:Hubz!celery.worker.components:Consumerzcelery.worker.components:Beatzcelery.worker.components:Poolzcelery.worker.components:Timerz celery.worker.components:StateDBz'celery.worker.autoscale:WorkerComponentN)�__name__�
__module__�__qualname__�__doc__�nameZ
default_steps�r!r!�>/usr/local/lib/python3.9/site-packages/celery/worker/worker.py�	BlueprintLsr#cKs�|p|j|_t|�|_t�tj�|_|jj�	�|j
fi|��|jfi|��|jfi|��|j
fi|jfi|����dS�N)�appr�hostnamer�nowr�utc�startup_time�loaderZinit_worker�on_before_init�setup_defaults�
on_after_init�setup_instance�prepare_args)�selfr%r&�kwargsr!r!r"�__init__Zs
zWorkController.__init__cKs�||_|�||�|�t|��|jsLzt�|_WntyJd|_Yn0t|j�|_|p`|j	|_
|j��|_
|dur�|��n||_||_tjj|d�t�|j�|_g|_|��|j|jjd|j|j|jd�|_|jj|fi|��dS)N��ZsenderZworker)�steps�on_start�on_close�
on_stopped)�pidfile�setup_queues�setup_includesrrr�NotImplementedErrorr�loglevel�on_consumer_ready�ready_callbackr%Zconnection_for_read�	_conninfo�should_use_eventloop�
use_eventloop�optionsr	Zworker_init�send�_concurrencyZget_implementation�pool_clsr5�on_init_blueprintr#r6r7r8�	blueprint�apply)r0�queuesr?r9�includerBZexclude_queuesr1r!r!r"r.es4�
�zWorkController.setup_instancecCsdSr$r!�r0r!r!r"rG�sz WorkController.on_init_blueprintcKsdSr$r!�r0r1r!r!r"r+�szWorkController.on_before_initcKsdSr$r!rMr!r!r"r-�szWorkController.on_after_initcCs|jrt|j�|_dSr$)r9r�pidlockrLr!r!r"r6�szWorkController.on_startcCsdSr$r!)r0�consumerr!r!r"r>�sz WorkController.on_consumer_readycCs|jj��dSr$)r%r*Zshutdown_workerrLr!r!r"r7�szWorkController.on_closecCs(|j��|j��|jr$|j��dSr$)�timer�stoprO�shutdownrN�releaserLr!r!r"r8�s

zWorkController.on_stoppedc
Cs�t|�}t|�}z|jjj�|�Wn8ty\}z tt���	||���WYd}~n
d}~00z|jjj�
|�Wn8ty�}z tt���	||���WYd}~n
d}~00|jjj
r�|jjj�t
|j��dSr$)rr%ZamqprJ�select�KeyErrorr�SELECT_UNKNOWN_QUEUE�strip�formatZdeselect�DESELECT_UNKNOWN_QUEUE�confrZ
select_addr&)r0rK�exclude�excr!r!r"r:�s ��
zWorkController.setup_queuescsft�jjj�}|r0|t|�7}�fdd�|D�|�_dd��jj��D�}tt|�|B��jj_dS)Ncsg|]}�jj�|��qSr!)r%r*Zimport_task_module��.0�mrLr!r"�
<listcomp>��z1WorkController.setup_includes.<locals>.<listcomp>cSsh|]}|jj�qSr!)�	__class__r)r^�taskr!r!r"�	<setcomp>�s�z0WorkController.setup_includes.<locals>.<setcomp>)�tupler%rZrK�tasks�values�set)r0Zincludes�prev�task_modulesr!rLr"r;�s
�zWorkController.setup_includescKs|Sr$r!rMr!r!r"r/�szWorkController.prepare_argscCstjj|d�dS)Nr4)r	Zworker_shutdownrDrLr!r!r"�_send_worker_shutdown�sz$WorkController._send_worker_shutdownc
Cs�z|j�|�Wn�ty*|��Yn�tyh}z(tjd|dd�|jtd�WYd}~nVd}~0t	y�}z|j|j
d�WYd}~n&d}~0ty�|jtd�Yn0dS)NzUnrecoverable error: %rT)�exc_info)�exitcode)rH�startr�	terminate�	Exception�logger�criticalrQr�
SystemExit�code�KeyboardInterrupt)r0r\r!r!r"rn�s "zWorkController.startcCs|jj|d|fdd�dS)N�register_with_event_loopzhub.register)�args�description)rHZsend_all)r0Zhubr!r!r"rv�s�z'WorkController.register_with_event_loopcCs|�|j|�Sr$)Z_quick_acquire�
_process_task�r0�reqr!r!r"�_process_task_sem�sz WorkController._process_task_semcCsHz|�|j�Wn2tyBz|��Wnty<Yn0Yn0dS)z2Process task by sending it to the pool of workers.N)Zexecute_using_pool�poolr
Z_quick_release�AttributeErrorrzr!r!r"ry�szWorkController._process_taskcCs&z|j��Wnty Yn0dSr$)rO�closer~rLr!r!r"�signal_consumer_close�sz$WorkController.signal_consumer_closecCs t�dko|jjjjo|jjS)N�default)rr@�	transportZ
implementsZasynchronousr%Z
IS_WINDOWSrLr!r!r"rA�s


��z#WorkController.should_use_eventloopFcCsF|dur||_|jjtkr:|��|r.|jjr:|jdd�|��dS)z7Graceful shutdown of the worker server (Warm shutdown).NT��warm)	rmrHrr
r�r}�signal_safe�	_shutdownrk)r0�
in_sighandlerrmr!r!r"rQ�szWorkController.stopcCs0|jjtkr,|��|r |jjr,|jdd�dS)z>Not so graceful shutdown of the worker server (Cold shutdown).Fr�N)rHrrr�r}r�r�)r0r�r!r!r"ro�szWorkController.terminateTcCsR|jdurNtt��,|jj||d�|j��Wd�n1sD0YdS)N)ro)rHr�SHUTDOWN_SOCKET_TIMEOUTrQ�join)r0r�r!r!r"r�s

zWorkController._shutdowncCsTt|j|||d��|jr.|j��|j��z|j��WntyNYn0dS)N)�force_reload�reloader)�list�_reload_modulesrOZupdate_strategiesZreset_rate_limitsr}Zrestartr<)r0�modules�reloadr�r!r!r"r�
s�

zWorkController.reloadcs.��fdd�t|dur �jjjn|p&d�D�S)Nc3s |]}�j|fi���VqdSr$)�_maybe_reload_moduler]�r1r0r!r"�	<genexpr>s�z1WorkController._reload_modules.<locals>.<genexpr>r!)rhr%r*rj)r0r�r1r!r�r"r�s���zWorkController._reload_modulescCsH|tjvr$t�d|�|jj�|�S|rDt�d|�ttj||�SdS)Nzimporting module %szreloading module %s)�sysr�rq�debugr%r*Zimport_from_cwdr)r0�moduler�r�r!r!r"r� s
z#WorkController._maybe_reload_modulecCs8t�tj�|j}|jjt��t	|j
j�t|�
��d�S)N)�total�pid�clock�uptime)rr'rr(r)rZtotal_count�os�getpid�strr%r��round�
total_seconds)r0r�r!r!r"�info(s

�zWorkController.infocCsbtdurtd��t�tj�}|j|j|j|j|j|j	|j
|j|j|j
|j|j|j|j|j|jd�S)Nz%rusage not supported by this platform)�utimeZstimeZmaxrssZixrssZidrssZisrssZminfltZmajfltZnswapZinblockZoublockZmsgsndZmsgrcvZnsignalsZnvcswZnivcsw)�resourcer<Z	getrusageZRUSAGE_SELFZru_utimeZru_stimeZ	ru_maxrssZru_ixrssZru_idrssZru_isrssZ	ru_minfltZ	ru_majfltZru_nswapZ
ru_inblockZ
ru_oublockZ	ru_msgsndZ	ru_msgrcvZru_nsignalsZru_nvcswZ	ru_nivcsw)r0�sr!r!r"�rusage/s(�zWorkController.rusagecCs`|��}|�|j�|��|�|jj�|j��z|��|d<WntyZd|d<Yn0|S)Nr�zN/A)r��updaterHrOr�r<)r0r�r!r!r"�statsFszWorkController.statscCsdj||jr|j��ndd�S)z``repr(worker)``.z#<Worker: {self.hostname} ({state})>ZINIT)r0r)rXrHZhuman_staterLr!r!r"�__repr__Ps�zWorkController.__repr__cCs|jS)z#``str(worker) == worker.hostname``.)r&rLr!r!r"�__str__WszWorkController.__str__cCstSr$rrLr!r!r"r[szWorkController.state�WARNcKs|jj}||_||_|d|�|_|d|�|_|d||�|_|d|�|_|d|�|_|d|�|_	|pd|
|_
|d|	�|_|d|
�|_|d	|�|_
|d
||�|_|d|�|_|d||�|_|d
||�|_|d||�|_|d|�|_|d|�|_t|d|��|_|d|�|_|d|�|_dS)NZworker_concurrencyZworker_send_task_eventsZworker_poolZworker_consumerZworker_timerZworker_timer_precisionZworker_autoscalerZworker_pool_putlocksZworker_pool_restartsZworker_state_dbZbeat_schedule_filenameZbeat_scheduler�task_time_limit�task_soft_time_limitZworker_max_tasks_per_childZworker_max_memory_per_childZworker_prefetch_multiplierZworker_disable_rate_limits�worker_lost_wait)r%�eitherr=�logfiler�task_eventsrF�consumer_cls�	timer_cls�timer_precision�optimization�autoscaler_cls�
pool_putlocks�
pool_restarts�statedb�schedule_filename�	scheduler�
time_limit�soft_time_limit�max_tasks_per_child�max_memory_per_child�int�prefetch_multiplier�disable_rate_limitsr�)r0rr=r�r�r}r�r�r�r�r�r�r��Or�r�r�r�rFZstate_dbr�r�Z
scheduler_clsr�r�r�r�r�r�Z_kwr�r!r!r"r,_sN�
�������zWorkController.setup_defaultscCsV|j}ttj�}|jjrd}|jjdkrR|rRd|jj�d�}t�|�t	|jj�dS)a�Wait :setting:`worker_soft_shutdown_timeout` if soft shutdown is enabled.

        To enable soft shutdown, set the :setting:`worker_soft_shutdown_timeout` in the
        configuration. Soft shutdown can be used to allow the worker to finish processing
        few more tasks before initiating a cold shutdown. This mechanism allows the worker
        to finish short tasks that are already in progress and requeue long-running tasks
        to be picked up by another worker.

        .. warning::
            If there are no tasks in the worker, the worker will not wait for the
            soft shutdown timeout even if it is set as it makes no sense to wait for
            the timeout when there are no tasks to process.
        Trz)Initiating Soft Shutdown, terminating in z secondsN)
r%rerZactive_requestsrZZ#worker_enable_soft_shutdown_on_idleZworker_soft_shutdown_timeoutrq�warningr)r0r%�requests�logr!r!r"�wait_for_soft_shutdown�s

z%WorkController.wait_for_soft_shutdown)NN)NNNNNN)N)FN)F)T)NFN)N)FN)Nr�NNNNNNNNNNNNNNNNNNNNNNNNNN).rrrrr%rNrHr}Z	semaphorermrr#r2r.rGr+r-r6r>r7r8r:r;r/rkrnrvr|ryr�rArQror�r�r�r�r�r�r�r�r��propertyrr,r�r!r!r!r"r?s�
�
(











�
=r)0rr�r�rr�timerZbilliardrZkombu.utils.compatrZceleryrrrEr	Zcelery.bootstepsr
rZcelery.exceptionsrr
rZcelery.platformsrrZcelery.utils.importsrZcelery.utils.logrrrqZcelery.utils.nodenamesrrZcelery.utils.textrZcelery.utils.threadsr�rr��ImportError�__all__r�rVrYrr!r!r!r"�<module>s8