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/events/__pycache__/cursesmon.cpython-39.pyc
a

X>h)F�@s�dZddlZddlZddlZddlmZddlmZddlmZddl	m
Z
ddlmZddlm
Z
mZdd	lmZdd
lmZmZdZdZd
ZdZdZdZdZdZdZGdd�d�ZGdd�dej�Zdd�Z ddd�Z!e"dkr�e!�dS)z0Graphical monitor of Celery events using curses.�N)�datetime)�count)�ceil)�wrap)�time)�VERSION_BANNER�states)�app_or_default)�abbr�abbrtask)�
CursesMonitor�evtop���$���zGevents: {s.event_count} tasks:{s.task_count} workers:{w_alive}/{w_all}
c@sfeZdZdZiZdZdZdZdZdZ	e
jZe
j
ZdZdZdZd	e��Zd
ZdGdd�Zd
d�Zedd��Zedd��Zedd��Zedd��Zedd��Zdd�Zdd�Zdd�ZdHd d!�Z e
j!d"e
j"d#e
j#d$iZ$d%d&�Z%dId'd(�Z&d)d*�Z'd+d,�Z(d-d.�Z)d/d0�Z*d1d2�Z+d3d4�Z,d5d6�Z-d7d8�Z.d9d:�Z/d;d<�Z0d=d>�Z1d?d@�Z2dAdB�Z3edCdD��Z4edEdF��Z5dS)Jrz#A curses based Celery task monitor.N�
rz
Selected: zWorkers online: zKeys: z9j:down k:up i:info t:traceback r:result c:revoke ^c: quitzcelery events zInfo: cCs\||_|p|j|_||_|j|j|j|j|j|j|j	d�}t
|fi|j��|_t��|_
dS)N)�J�K�C�T�R�I�L)�app�keymap�state�move_selection_down�move_selection_up�revoke_selection�selection_traceback�selection_result�selection_info�selection_rate_limit�dict�	threading�RLock�lock)�selfrrrZdefault_keymap�r+�A/usr/local/lib/python3.9/site-packages/celery/events/cursesmon.py�__init__3s�	zCursesMonitor.__init__c

Cs�|j}|dtdt}|dtdt}|tkr<|}	nt}	||	d}tt|d��}
||
d}t||	��	|	�}t||��	|�}t
||
��	|
�}t|t��	t�}|�	t�}|�d|�d|�d|�d|�d�
}|jdur�t|d|��|_|d|�S)N�g@� )
�
display_width�STATE_WIDTH�TIMESTAMP_WIDTH�MIN_TASK_WIDTH�MIN_WORKER_WIDTH�
UUID_WIDTH�intrr
�ljustr�screen_width�len)
r*�uuid�task�worker�	timestampr�mxZdetail_widthZ
uuid_spaceZ
uuid_widthZ
task_widthZworker_width�rowr+r+r,�
format_rowCs$
"
zCursesMonitor.format_rowcCs|j��\}}|S�N��win�getmaxyx�r*�_r>r+r+r,r8^szCursesMonitor.screen_widthcCs|j��\}}|SrArB�r*�myrFr+r+r,�
screen_heightcszCursesMonitor.screen_heightcCs|j��\}}|tSrA)rCrD�BORDER_SPACINGrEr+r+r,r0hszCursesMonitor.display_widthcCs|j��\}}|dS)NrrBrGr+r+r,�display_heightmszCursesMonitor.display_heightcCs|jSrA)rK�r*r+r+r,�limitrszCursesMonitor.limitcCs8|js
dSt|j�D]\}}|j|dkr|SqdS�Nr)�tasks�	enumerate�
selected_task)r*�i�er+r+r,�
find_positionvs
zCursesMonitor.find_positioncCs|�d�dS)N�����move_selectionrLr+r+r,r ~szCursesMonitor.move_selection_upcCs|�d�dS)Nr.rVrLr+r+r,r�sz!CursesMonitor.move_selection_downr.cCsR|js
dS|��}z|j||d|_Wn"tyL|jdd|_Yn0dSrN)rOrTrQ�
IndexError)r*�	direction�posr+r+r,rW�szCursesMonitor.move_selectionrrrcCsVz|j����}Wnty&YdS0|j�|�p6|}|j�|�}|durR|�dSrA)rC�getkey�upper�	Exception�keyalias�getr)r*�key�handlerr+r+r,�handle_keypress�szCursesMonitor.handle_keypresscCs�|j��|j��\}}td�}}|rN|j�t|�d|tjtjB�t|�|||t|��|j�|dddtj�|j�	�z|j�
���WSty�Yq�0q�dS)N�rr.rzPress any key to continue...)
rC�eraserDr�addstr�next�curses�A_BOLD�A_UNDERLINE�refreshr[r\r])r*�callback�titlerHr>�y�
blank_liner+r+r,�alert�s"

��
zCursesMonitor.alertcCs�|jst��S|jj|j}|js*t��S|j��\}}d}|j�|dd|tj	tj
B�|j�|dt|�dd|t|��|�|ddt|��}|r�|j
jj|j|��dd�}|�|�dS)NzNew rate limit: rcrr/T��reply)rQrg�beeprrO�namerCrDrerhrir9�readliner�controlZ
rate_limit�strip�alert_remote_control_reply)r*r;rHr>�rZrlimitrqr+r+r,r%�s(�z"CursesMonitor.selection_rate_limitcs��fdd�}��|d�S)Nc
	s�t|�}�s2�j�t|�ddtjt�d��dS�D]�}t|�}t|���\}}|�d�}�j�|d|tj�tj}d}	d|vr�|d}	|t�d�O}nd|vr�|d}	|t�d�O}�j�|dt	|�|	|�q6dS)Nrz#No replies received in 1s deadline.rc�: ��error�ok)
rrCrerfrgrh�
color_pair�items�A_NORMALr9)
rHr>�xsrmZsubreply�curline�host�response�attr�text�rqr*r+r,rk�s*
�
z:CursesMonitor.alert_remote_control_reply.<locals>.callbackzRemote Control Command Replies)ro)r*rqrkr+r�r,rw�sz(CursesMonitor.alert_remote_control_replycCszd}t��z^d}|j�|||�}|dkr|dtjfvr<q`|dvrJd}q`|t|�7}|d7}qWt��n
t��0|S)NrzrrUr)�r.)rg�echorCZgetch�	KEY_ENTER�chrZnoecho)r*�xrm�bufferrR�chr+r+r,rt�szCursesMonitor.readlinecCs0|jst��S|jjj|jdd�}|�|�dS)NTrp)rQrgrrrruZrevokerw)r*rqr+r+r,r!�szCursesMonitor.revoke_selectioncs*�js
dS�fdd�}��|d�j���S)Nc
s:�j��\}}t|�}�jj�j}|jdgd�}d|�dd�fd|�dd�fgt|�	��}|D]�\}}|durtqbt
|�}t|�}	|d}
�j�|	d|
t
j�t||d�}t|�dkr�j�|	t|
�dt|d	�jt|
�d��qb|D]B}t|�}
|
|dk�rd
}�j�|
dtd|�jd�t
j�q�qbdS)
Nr)�extra�args�kwargsryrrcr.rz	    [...]z    r)rCrDrrrOrQ�info�pop�listr~�strrfrergrhrr9r
r8r)r>rHr�rmr;r�Z	infoitemsr`�valuer��keys�wrappedZsublineZnextyrLr+r,�alert_callback�sB�
����z4CursesMonitor.selection_info.<locals>.alert_callbackzTask details for �rQro�r*r�r+rLr,r$�s!�zCursesMonitor.selection_infocsR�jst��S�jj�j��jtjvr0t��S��fdd�}��|d�j���S)Ncs2t|�}�j�d�D]}�j�t|�d|�qdS)N�
r)r�	traceback�splitrCrerf)rHr>r�rm�line�r*r;r+r,r�%sz9CursesMonitor.selection_traceback.<locals>.alert_callbackzTask Exception Traceback for )rQrgrrrrOr�EXCEPTION_STATESror�r+r�r,r"s
�z!CursesMonitor.selection_tracebackcs*�js
dS�fdd�}��|d�j���S)Ncs^t|�}�jj�j}t|dd�p,t|dd�}t|p6d|d�D]}�j�t|�d|�q@dS)N�result�	exceptionrzrcr)	rrrOrQ�getattrrrCrerf)rHr>r�rmr;r�r�rLr+r,r�3s
�z6CursesMonitor.selection_result.<locals>.alert_callbackzTask Result for r�r�r+rLr,r#/s
�zCursesMonitor.selection_resultc	Cs�|j�|j�}tj}|j|jkr&tj}t�	|j
p4t��}|�d�}|j
rP|j
jnd}|�|j|j|||j�}|j�|t||�|r�|j�|t|�ttd|j||B�dS)Nz%H:%M:%Sz*NONE*r.)�state_colorsr_rrgrr:rQZ
A_STANDOUTr�utcfromtimestampr=r�strftimer<�hostnamer@rsrCre�LEFT_BORDER_OFFSETr9r1rJ)	r*�linenor;Zstate_colorr�r=Ztimefr�r�r+r+r,�display_task_row@s&
�
�
�zCursesMonitor.display_task_rowcCsv|j��X|j}|��t}td�}}|��\}}|��|�dt�	d��|�
�|�d||jtj
t�	d�B�t|�|�t|�||�ddddd	�tjtjB�|j}|r�t|�D]4\}\}}	||jkr�q�|	jr�t|�}
|�|
|	�q�t|�|�|d
|tj|jd�|j�r6|�|d||jtj�d}d
}z|jj|j}
Wnt�y`Yn^0|
��}d|v�r�d�|d�|d<d|v�r�t |dd�|d<d�!dd�|�"�D��}d}t ||jt#|j�d|�}|�|d|t#|j�|�||v�rLt#|�t#|�}|�|d|t#|j�||tj�n|�|d|dtj$�|j%�r�|�|d||j&tj�|�|d|t#|j&�d�!t'|j%��tj$�n|�|d|d�|�|d||j(tj�|�|d|t#|j(�t)j|jt#dd�|jj%�*�D��t#|jj%�d�tj
�|�+|d||j,tj�|�+|d|t#|j,�|j-tj
�|�.�Wd�n1�sh0YdS)Nrcr/r.��UUIDZTASKZWORKERZTIMEZSTATE�rzMissing extended inforzZruntimez{:.2f}r�rcss |]\}}|�d|��VqdS)�=Nr+)�.0r`r�r+r+r,�	<genexpr>�s�z%CursesMonitor.draw.<locals>.<genexpr>z... -> key izNo task selectedz, zNo workers discovered.rcSsg|]}|jr|�qSr+��alive)r��wr+r+r,�
<listcomp>�s�z&CursesMonitor.draw.<locals>.<listcomp>)�sZw_aliveZw_all)/r)rCrbr�rrDrdZbkgdrgr}Zborderre�greetZA_DIMrfr@rhrirOrPrKr:r�ZhlineZ	ACS_HLINEr8rQ�selected_strr�KeyErrorr��formatr
�joinr~r9r�workers�
online_str�sorted�info_str�
STATUS_SCREEN�values�safe_add_str�
help_title�helprj)r*rCr�rmrnrHrFrOr?r;r�r�ZdetailZ	selectionZinfowinZ	detailposr+r+r,�drawTs�
�
�



��
��
���zCursesMonitor.drawcOsF|t|�|jkr$|d|j|�}|jj|||g|�Ri|��dSrA)r9r8rCre)r*rmr��stringr�r�r+r+r,r��szCursesMonitor.safe_add_strc	Cs|j��t��|_|j�d�|j�d�t��t�d|j|j	�t�dtj
|j	�t�dtj|j	�t�dtj|j	�t�dtj
|j	�t�dtj|j�tjt�d�tjt�d�tjt�d�i|_tjD]}t�d�|j|<q�t��Wd�n1�s0YdS)NTr.rcrrr�r�)r)rgZinitscrrCZnodelay�keypadZstart_colorZ	init_pair�
foreground�
backgroundZ	COLOR_REDZCOLOR_GREENZ
COLOR_MAGENTAZ
COLOR_BLUEZCOLOR_YELLOWr�SUCCESSr}ZREVOKEDZSTARTEDr�r�Zcbreak)r*rr+r+r,�init_screen�s$
�
zCursesMonitor.init_screencCsN|j�4t��|j�d�t��t��Wd�n1s@0YdS�NF)r)rgZnocbreakrCr�r�ZendwinrLr+r+r,�resetscreen�s
zCursesMonitor.resetscreencCst�|j�dSrA)rgZnapms�screen_delayrLr+r+r,�nap�szCursesMonitor.napcCst|jj|jd��S)N)rM)r�rZ
tasks_by_timerMrLr+r+r,rO�szCursesMonitor.taskscCsdd�|jj��D�S)NcSsg|]\}}|jr|�qSr+r�)r�r�r�r+r+r,r��s�z)CursesMonitor.workers.<locals>.<listcomp>)rr�r~rLr+r+r,r��szCursesMonitor.workers)N)r.)N)6�__name__�
__module__�__qualname__�__doc__rrCr�rQZselected_positionr�rgZCOLOR_BLACKr�ZCOLOR_WHITEr�r�r�r�rr�r�r-r@�propertyr8rIr0rKrMrTr rrWZKEY_DOWNZKEY_UPr�r^rbror%rwrtr!r$r"r#r�r�r�r�r�r�rOr�r+r+r+r,r"sj







	�

)X
rcs$eZdZ�fdd�Zdd�Z�ZS)�
DisplayThreadcs||_d|_t���dSr�)�display�shutdown�superr-)r*r���	__class__r+r,r-�szDisplayThread.__init__cCs |js|j��|j��qdSrA)r�r�r�r�rLr+r+r,�run�s
zDisplayThread.run)r�r�r�r-r��
__classcell__r+r+r�r,r��sr�cCs�dd�}tdtjd�|����}zB|�||jj�|jj|d|j	id�}|�
�|��|��Wn@|j
|jy�}z td|��tjd�WYd}~n
d}~00Wd�q1s�0YqdS)NcSstd�||�tjd�dS)Nz&Connection Error: {!r}.  Retry in {}s.��file)�printr��sys�stderr)�exc�intervalr+r+r,�on_connection_error�s
��z+capture_events.<locals>.on_connection_errorz-> evtop: starting capture...r��*)�handlerszConnection lost: )r�r�r�Zconnection_for_readZensure_connection�confZbroker_connection_max_retries�eventsZReceiver�eventr�r��captureZconnection_errorsZchannel_errors)rrr�r��conn�recvr�r+r+r,�capture_events�s
�r�c	Cs�t|�}|j��}t||�}|��t|�}|��zt|||�WnTtynd|_	|�
�|���Yn,tt
fy�d|_	|�
�|��Yn0dS)zStart curses monitor.TN)r	r��Staterr�r��startr�r]r�r�r��KeyboardInterrupt�
SystemExit)rrr�Z	refresherr+r+r,r
s"

r
�__main__)N)#r�rgr�r'r�	itertoolsr�mathr�textwraprrZceleryrrZ
celery.appr	Zcelery.utils.textr
r�__all__rJr�r5r1r2r4r3r�r�Threadr�r�r
r�r+r+r+r,�<module>s:@