
    (phG                         S SK Jr  S SKJr  S SKJrJr  S SKJr  S SK	J
r  S SKJrJr  S SKJr  S SKJr  S S	KJr   S S
KrS rSrSS jrSS jrSS jrS rg
! \ a    S
r N"f = f)    )	timedelta)
connection)FSum)timezone)gettext)VERSIONmodels)
get_broker)Conf)StatNc                      [         R                  " U 5      n[        UR                  5       R                  S-  S5      nU$ ! [         R
                   a    Sn U$ f = f)N      NO_PROCESS_FOUND)psutilProcessroundmemory_inforssNoSuchProcess)pidprocessmb_useds      L/var/www/html/venv/lib/python3.13/site-packages/django_q/monitor_terminal.pyget_process_mbr      s]    %..%++-11G;Q? N  %$N%s   =A AAz_Blessed is not installed. Please install blessed to use this: https://pypi.org/project/blessed/c                    U(       d
  [        5       n SSKJn  U" 5       nUR                  5         UR                  5          UR                  5          UR                  5          S n[        UR                  S-  5      nUS;  G	a  [        UR                  S-  5      nXe:w  a  [	        UR                  5       5        Un[	        UR                  SS5      UR                  UR                  [!        S5      US-
  S95      -   5        [	        UR                  SSU-  5      UR                  UR                  [!        S5      US-
  S95      -   5        [	        UR                  SS	U-  5      UR                  UR                  [!        S
5      US-
  S95      -   5        [	        UR                  SSU-  5      UR                  UR                  [!        S5      US-
  S95      -   5        [	        UR                  SSU-  5      UR                  UR                  [!        S5      US-
  S95      -   5        [	        UR                  SSU-  5      UR                  UR                  [!        S5      US-
  S95      -   5        [	        UR                  SSU-  5      UR                  UR                  [!        S5      US-
  S95      -   5        [	        UR                  SSU-  5      UR                  UR                  [!        S5      US-
  S95      -   5        S	n["        R$                  " US9n[	        UR'                  5       5        U GH>  n	U	R(                  n
U	R(                  [*        R,                  :X  a)  UR/                  [1        [*        R,                  5      5      n
OU	R(                  [*        R2                  :X  a)  UR5                  [1        [*        R2                  5      5      n
O~U	R(                  [*        R6                  :X  a)  UR9                  [1        [*        R6                  5      5      n
O7U	R(                  [*        R:                  :X  a  [1        [*        R:                  5      n
[1        U	R<                  5      nU	R<                  S:  a{  UR?                  [1        U	R<                  5      5      n[*        R@                  (       aB  U	R<                  [*        R@                  :X  a$  UR/                  [1        U	R<                  5      5      nU	RB                  nUS:  a  UR?                  [1        U5      5      n[E        U	RF                  5      nU[*        RH                  :  a  UR5                  [1        U5      5      n[J        RL                  " 5       U	RN                  -
  RQ                  5       n[S        US5      u  nn[S        US5      u  nnSUUU4-  n[	        UR                  US5      UR                  U	RT                  S US-
   US-
  S9-   5        [	        UR                  USU-  5      UR                  [1        U	RV                  5      SS  US-
  S9-   5        [	        UR                  US	U-  5      UR                  XS-
  S9-   5        [	        UR                  USU-  5      UR                  XS-
  S9-   5        [	        UR                  USU-  5      UR                  XS-
  S9-   5        [	        UR                  USU-  5      UR                  XS-
  S9-   5        [	        UR                  USU-  5      UR                  U	RX                  US-
  S9-   5        [	        UR                  USU-  5      UR                  XS-
  S9-   5        US-  nGMA     US-  nUR[                  5       nUR]                  5       nU(       a  U SU S3n[	        UR                  US5      UR_                  UR                  URa                  5       US	-  S95      -   5        [	        UR                  US	U-  5      URc                  UR                  [!        S5      US95      -   5        [	        UR                  USU-  5      UR_                  UR                  UUS95      -   5        [	        UR                  USU-  5      URc                  UR                  [!        S5      US95      -   5        [	        UR                  USU-  5      UR_                  UR                  [d        Rf                  Rh                  Rk                  5       US95      -   5        [	        UR                  USU-  5      URc                  UR                  [!        S5      US95      -   5        [	        UR                  USU-  5      UR_                  UR                  [d        Rl                  Rh                  Rk                  5       US95      -   5        U (       a/  ["        R$                  " US9sS S S 5        sS S S 5        sS S S 5        $ [	        UR                  US	-   S5      UR                  [!        S5      5      -   5        URo                  SS 9nUS;  a  G	M  S S S 5        S S S 5        S S S 5        g ! [         a    [	        [
        5         g f = f! , (       d  f       N>= f! , (       d  f       NG= f! , (       d  f       g = f)!Nr   Terminal   qQHost   widthIdr   State   Pool   TQ   RQ   RC   Upbrokeri  <   z%d:%02d:%02d()QueuedSuccessFailures[Press q to quit]timeout)8r   blessedr   ImportErrorprintBLESSED_INSTALL_MESSAGEping
fullscreenhidden_cursorcbreakintr'   clearmoveblack_on_greencenter_r   get_all	clear_eosstatusr   WORKINGgreenstrSTOPPINGyellowSTOPPEDredIDLEtask_q_sizecyanQUEUE_LIMITdone_q_sizelenworkersWORKERSr   nowtobtotal_secondsdivmodhost
cluster_idreincarnations
queue_size	lock_sizewhite_on_cyaninfoblack_on_cyanr
   r;   objectscountFailureinkey)run_oncer5   r   termvalstart_width	col_widthistatsstatrP   tasksresultsr^   uptimehours	remainderminutessecondsrg   rh   s                        r   monitorr   &   s2	   $z
 KKM		D..0$++-$**q.) 
 
 DJJN+I'djjl#'		!Q%%dkk!F)9q=k&QRS 		!Q]+%%dkk!D'Qk&OPQ 		!Q]+%%dkk!G*IPQMk&RST 		!Q]+%%dkk!F)9q=k&QRS 		!Q]+%%dkk!D'Qk&OPQ 		!Q]+%%dkk!D'Qk&OPQ 		!Q]+%%dkk!D'Qk&OPQ 		!Q]+%%dkk!D'Qk&OPQ ALL/E$.."#;;$,,.!ZZDLL(9:F[[DMM1![[T]]);<F[[DLL0!XXc$,,&78F[[DII- ^FD,,-##a' IIc$*:*:&;<E''D,<,<@P@P,P $

3t/?/?+@ A**Q;"iiG5Gdll+T\\)"kk#g,7G",,.4883BBD#)&$#7 y#))R#8 '5'7*CCIIaOkk$))Oi!m"<IPQMkRS IIaY/kk#doo"6rs";9q=kQR IIaY/kk&Ak>? IIaY/kk'Qk?@ IIaY/kk%1}k=> IIaY/kk'Qk?@ IIaY/kk$"5"5Y]kKL IIaY/kk&Ak>? Q} @ FA**,J((*I *|1YKq9
		!Q$$T[[iRSm[%TUV 		!Q]+$$T[[8I[%NOP 		!Q]+$$T[[9[%MNO 		!Q]+$$T[[9Y[%OPQ 		!Q]+$$KK 6 6 < < >iKP 		!Q]+$$T[[:i[%PQR 		!Q]+$$KK 6 6 < < >iKP ||62m 3@-00		n $))AE1%A6I4J(KKL**Q*'Ck  
 
 3@0		  %&
 3@-00		sa   i8  j9j("fj2	j(;	j9Ajj('j98jj
j%!j((
j6	2j99
kc                 N   U (       d
  [        5       n  SSKJn  U" 5       nU R                  5         [        R                  " U S9n[        U5      nSnSnU H)  nU[        UR                  5      -  nXgR                  -  nM+     Sn[        S5      n	Sn
[        R                  R                  R!                  ["        R$                  " 5       ['        SS9-
  S9nUR)                  5       nUS:  a  [*        R,                  S:w  aD  UR/                  [1        [3        S	5      [3        S
5      -
  5      S9n
U
S   R5                  5       U-  n
OU H  nXR7                  5       -  n
M     X-  n
US:  a  US-  n[        S5      n	O0US:  a  US-  n[        S5      n	OUS:  a  US-  n[        S5      n	OUn[	        UR9                  5       5        [;        UR<                  S-  5      n[	        UR?                  URA                  [        S5      [B        RD                  RG                  5       SRI                  S [J         5       5      U RM                  5       S.-  5      5      5        [	        URO                  [        S5      5      URQ                  SU-  5      -   URS                  [U        U5      5      -   URQ                  SU-  5      -   URO                  [        S5      5      -   URQ                  SU-  5      -   URS                  [U        U5      5      -   URQ                  SU-  5      -   URO                  [        S5      5      -   URQ                  SU-  5      -   URS                  [U        U5      5      -   5        [	        URO                  [        S5      5      URQ                  SU-  5      -   URS                  [U        U RW                  5       5      5      -   URQ                  SU-  5      -   URO                  [        S 5      5      -   URQ                  SU-  5      -   URS                  [U        [        R                  R                  R)                  5       5      5      -   URQ                  SU-  5      -   URO                  [        S!5      5      -   URQ                  SU-  5      -   URS                  [U        [        RX                  R                  R)                  5       5      5      -   5        [	        URO                  [        S"5      5      URQ                  SU-  5      -   URS                  [U        [        RZ                  R                  R)                  5       5      5      -   URQ                  SU-  5      -   URO                  [        S#5      S$U	0-  5      -   URQ                  SU-  5      -   URS                  US% 5      -   URQ                  SU-  5      -   URO                  [        S&5      5      -   URQ                  SU-  5      -   URS                  U
S' 5      -   5        g(! [         a    [	        [
        5         g f = f))Nr   r   r4   day   )r{   )stopped__gtesqlitestoppedstarted)
time_takenr   iQ secondi  minutehourr0   z(-- %(prefix)s %(version)s on %(info)s --.c              3   8   #    U  H  n[        U5      v   M     g 7fN)rS   ).0vs     r   	<genexpr>info.<locals>.<genexpr>
  s     '@1As   )prefixversionrj   Clustersr%   r   Workersr*   r,   Restartsr.   r:   	Successesr<   	ScheduleszTasks/%(per)sperz.2fzAvg timez.4fT).r   r@   r   rA   rB   rC   rD   r   rN   r]   r^   rf   rM   r
   r;   rl   filterr   r`   r   rm   r   vendor	aggregater   r   rb   r   rO   rH   r'   rK   rL   r   PREFIX
capitalizejoinr	   rj   rZ   move_xwhiterS   rg   rn   Schedule)r5   r   rq   rw   clustersr^   rf   cluster	tasks_perr   	exec_time
last_taskstasks_per_daytrt   s                  r   rj   rj      s   $z
 KKM<<v&D4yHGN3w''000  I
E(CI''..\\^ib&99 / J $$&Mq(",,q|a	l:; - I ",/==?-OI  \\^+	  !1I<'%6IH+CW$%1IH+CR%*IF)C%I	$..
DJJN#I	KK<="kk446"xx'@'@@"KKM		
 
		!J- 
++a)m
$	%
**S]
#	$ ++a)m
$	% ))AiL
!		"
 ++a)m
$	% **S\
"	# ++a)m
$	% ))AjM
"	# ++a)m
$		% **S(
)
	* 
		!H+
++a)m
$	%
**S**,-
.	/ ++a)m
$	% ))AkN
#		$
 ++a)m
$	% **S//5578
9	: ++a)m
$	% ))AjM
"	# ++a)m
$		% **S//5578
9
	: 
		!K.!
++a)m
$	%
**S006689
:	; ++a)m
$	% ))Ao&%5
6		7
 ++a)m
$	% **	#
(	) ++a)m
$	% ))AjM
"	# ++a)m
$		% **	#
(
	) G  %&s   X X$#X$c                    U(       d
  [        5       n SSKJn  U" 5       nUR                  5         [        (       d4  [	        UR                  5       5        [	        UR                  S5      5        g UR                  5          UR                  5          UR                  5          Sn[        R                  " 5       nSnS n[        UR                   U-  5      n	US;  Ga&  [        UR                   U-  5      n
X:w  a  [	        UR#                  5       5        U
n	[	        UR%                  SSU
-  5      UR'                  UR)                  [+        S5      U
S-
  S	95      -   5        [	        UR%                  SSU
-  5      UR'                  UR)                  [+        S
5      U
S-
  S	95      -   5        [	        UR%                  SSU
-  5      UR'                  UR)                  [+        S5      U
S-
  S	95      -   5        [	        UR%                  SSU
-  5      UR'                  UR)                  [+        S5      U
S-
  S	95      -   5        [	        UR%                  SSU
-  5      UR'                  UR)                  [+        S5      U
S-
  S	95      -   5        [	        UR%                  SSU
-  5      UR'                  UR)                  [+        S5      U
S-
  S	95      -   5        [	        UR%                  SSU
-  5      UR'                  UR)                  [+        S5      U
S-
  S	95      -   5        [	        UR%                  SSU
-  5      UR'                  UR)                  [+        S5      U
S-
  S	95      -   5        Sn[,        R.                  " US9n[	        UR                  5       5        U GH  n[1        [        R2                  " 5       R4                  S-  [        R2                  " 5       R6                  -  S5      n[1        [        R2                  " 5       R4                  S-  S5      nX:  a  Un[        R                  " 5       n[	        UR%                  USU
-  5      UR)                  UR8                  S U
S-
   U
S-
  S	9-   5        [	        UR%                  USU
-  5      UR)                  [;        UR<                  5      SS  U
S-
  S	9-   5        [	        UR%                  USU
-  5      UR)                  XS-
  S	9-   5        [	        UR%                  USU
-  5      UR)                  XS-
  S	9-   5        [	        UR%                  USU
-  5      UR)                  [1        [        R2                  " 5       R6                  S-  S5      U
S-
  S	9-   5        [	        UR%                  USU
-  5      UR)                  [?        UR@                  5      U
S-
  S	9-   5        [	        UR%                  USU
-  5      UR)                  [?        [C        USS 5      5      U
S-
  S	9-   5        SnURD                   H*  n[?        U5      n[G        U[:        5      (       a  SnUU-  nM,     [	        UR%                  USU
-  5      UR)                  U=(       d    SU
S-
  S	9-   5        US-  nGM     U(       Ga  US-  n[        UR                   S[H        RJ                  -   -  5      n
[	        UR%                  USU
-  5      URM                  UR)                  [+        S
5      U
S-
  S	95      -   5        [O        [H        RJ                  5       HY  n[	        UR%                  UUS-   U
-  5      URM                  UR)                  SRQ                  US-   5      U
S-
  S	95      -   5        M[     US-  nU H  n[	        UR%                  USU
-  5      UR)                  [;        UR<                  5      SS  U
S-
  S	9-   5        [S        URD                  5       HF  u  nn[?        U5      n[	        UR%                  UUS-   U
-  5      UR)                  UU
S-
  S	9-   5        MH     US-  nM     US-  n[	        UR%                  US5      [+        S5      [;        U5      URU                  S5      S .-  -   5        U (       a/  [,        R.                  " US9sS S S 5        sS S S 5        sS S S 5        $ [	        UR%                  US-   S5      UR)                  [+        S!5      5      -   5        URW                  SS"9nUS;  a  GM&  S S S 5        S S S 5        S S S 5        g ! [         a    [	        [
        5         g f = f! , (       d  f       N>= f! , (       d  f       NG= f! , (       d  f       g = f)#Nr   r   z9Cannot start "qmemory" command. Missing "psutil" library.g      Y@r    r!   r$   r%   r&   r(   r   zAvailable (%)r*   zAvailable (MB)r,   z
Total (MB)r.   zSentinel (MB)r0   zMonitor (MB)r2   zWorkers (MB)r4   d   r   r7   r   NO_PROCESSES_FOUNDzWorker #{} (MB)z/Available lowest (): %(memory_percent)s ((at)s)z%Y-%m-%d %H:%M:%S+00:00)memory_percentatr=   r>   ),r   r@   r   rA   rB   rC   rD   r   rO   white_on_redrE   rF   rG   r   r`   rH   r'   rI   rJ   rK   rL   rM   r   rN   r   virtual_memory	availabletotalrd   rS   re   r   sentinelgetattrr^   
isinstancer   r_   rk   rangeformat	enumeratestrftimero   )rp   r^   r5   r   rq   "MEMORY_AVAILABLE_LOWEST_PERCENTAGE%MEMORY_AVAILABLE_LOWEST_PERCENTAGE_ATcolsrr   rs   rt   rowrv   rw   memory_available_percentagememory_available
workers_mb
worker_pidresult
worker_numidxr   s                         r   memoryr   :  s   $z KKM6dnnK	

 			D..0$++--2*08-$**t+,#DJJ-.I'djjl#'		!Q]+%%dkk!F)9q=k&QRS 		!Q]+%%dkk!D'Qk&OPQ 		!Q]+%%KK/ 2)a-KH 		!Q]+%%KK"2 39q=KI 		!Q]+%%dkk!L/UVk&WXY 		!Q]+%%KK/ 2)a-KH 		!Q]+%%KK. 1QKG 		!Q]+%%KK. 1QKG CLL/E$.."#.3))+55++-334 	/+ $))>)>)@)J)JW)TVW#X .S9T6<DLLN9IIc1y=1kk$))Oi!m"<IPQMkRS IIc1y=1kk#doo"6rs";9q=kQR IIc1y=1kk"=QR]kST IIc1y=1kk"2a-kHI IIc1y=1kkf335;;gEqI'!m "  IIc1y=1kk."?yST}kUV IIc1y=1kk&wtY'EF'!m "  
"&,,J+J7F!&#..!"&(J	 #/
 IIc1y=1kk":&:)a- "  qw z q

a$,,.> ?@	IIc1y=1((QtWIPQM)RST #("5J		#
Q)'CD,, KK 1 8 8a H&/!m (  #6 q!D		#q9}5++c$//&:23&?yST}+UV ,5T\\+BZ"0"< IIcC!Gy+@A"kk'QkGH ,C 1HC " 1HC		#q!EF&)*L&M?HH1	 ||62E 3@-00		F $))C!GQ'$++a8K6L*MMN**Q*'C} # 3@0		  %& 3@-00		sa   d ?ee!_4d:	e	e1Ad:e
ed76d7:
ee
e	e
e*c                      [         R                  " 5       n U (       a  U  H  n[        UR                  5        M     g[        [	        S5      5        g)Nz!No clusters appear to be running.T)r   rN   rB   re   rM   )rw   ss     r   get_idsr     s>    <<>DA!,,   	a345    )FNr   )FFN)datetimer   	django.dbr   django.db.modelsr   r   django.utilsr   django.utils.translationr   rM   django_qr	   r
   django_q.brokersr   django_q.confr   django_q.statusr   r   rA   r   rC   r   rj   r   r    r   r   <module>r      sl     ! # ! 1 $ '   
( d(NjZw(tC  Fs   A A#"A#