
    (ph                        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   \R                  " 5         S SKJrJr  S SKJrJr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 J!r!J"r"   S SKrSS\S\4S jjr$S\4S jr%S\4S jr&g! \R                  R                   a    S SKr\R                  " 5          Nf = f! \# a    Sr NYf = f)    )current_process)Queue)coredb)apps)gettext_lazyN)Broker
get_broker)Confloggersetproctitle)SuccessTask)post_execute)SignedPackage)async_chain)close_old_django_connectionsget_func_reprresult_queuebrokerc                    U(       d
  [        5       n[        5       R                  n[        (       a  [        R                  " SU S35        [        R
                  " [        S5      U[        5       R                  S.-  5        [        U R                  S5       H  nUR                  SS5      (       a  [        X15        O[        X15        UR                  SS5      nU(       a2  US	   (       d  UR                  S
S5      (       a  UR                  U5        [        R                  " SUS9  [!        US   5      nUS	   (       a)  [        R
                  " [        S5      XSS   S.-  5        M  [        R"                  " [        S5      UUS   US   S.-  5        GM     [        R
                  " [        S5      SU0-  5        g)z
Gets finished tasks from the result queue and saves them to Django
:type broker: brokers.Broker
:type result_queue: multiprocessing.Queue
z	qcluster z monitorz%(name)s monitoring at %(id)s)nameidSTOPcachedFack_idsuccessack_failuredjango_q)sendertaskfuncz)Processed '%(info_name)s' (%(task_name)s)r   )	info_name	task_namez8Failed '%(info_name)s' (%(task_name)s) - %(task_result)sresult)r#   r$   task_resultz#%(name)s stopped monitoring resultsN)r
   r   r   r   r   info_piditergetsave_cached	save_taskpopacknowledger   sendr   error)r   r   	proc_namer!   r   r#   s         C/var/www/html/venv/lib/python3.13/site-packages/django_q/monitor.pymonitorr4      sn    !&&I|!!Ii["AB
KK	
)*O$5$9$9
:	; \%%v.88He$$%d#(E*tI$((=%*H*Hv&$7!$v,/		?KK=> )VEF LLLM!*!%f#'>- /< KK78FI;NNO    c                    U R                  S[        R                  S:  5      (       d  U S   (       a  gU R                  SS5      (       a  [        U S   U S   U S   U S   US	9  [	        5          0 n[        R
                  (       al  [        R
                  S
;   aX  [        R
                  U ;   aD  U [        R
                     n[        R
                  S:X  a  [        U5      nX2[        R
                  '   [        R                  S:  a  [        R                  R                  [        R                  R                  [        5      S9   [        R                  R                  " S0 UD6nUR                  5        Vs/ s H  nUR                   PM     nnU S   (       a;  [#        U5      [        R                  :  a  UR%                  5       R'                  5         SSS5         [(        R                  R                  U S   U S   S9nUR*                  (       dB  U S   Ul        U S   Ul        U S   Ul        UR0                  S-   Ul        UR3                  5         [        R8                  S:  aK  UR0                  [        R8                  :  a,  U R                  S5      (       a  UR;                  U S   5        ggggs  snf ! , (       d  f       N= f! [(        R4                   a    [        U S   5      n[(        R                  R7                  U S   U S   UU R                  S5      U S   U S   U R                  S5      U S   U S   U S   U R                  S5      U S   SS9n GN	f = f! [<         a    [>        R@                  " S5         gf = f)zj
Saves the task package to Django or the cache
:param task: the task package
:type broker: brokers.Broker
saver   r   Nchaingroupr   syncr9   r   r:   r   >   r"   r   r9   r"   )usingr   r   )r   r   stoppedr%      hookargskwargsclusterstarted)r   r   r"   r?   r@   rA   rB   rC   r=   r%   r9   r   attempt_countr   Could not save task result )!r+   r   
SAVE_LIMITr   r   SAVE_LIMIT_PERr   r   transactionatomicrouterdb_for_writer   objectsfilterselect_for_updatepklenlastdeleter   r   r=   r%   rD   r7   DoesNotExistcreateMAX_ATTEMPTSr/   	Exceptionr   	exception)	r!   r   filtersvaluesuccess_tasks_qssuccess_tasksuccess_tasks_pkstask_objr"   s	            r3   r-   r-   M   s    88FDOOq011d9oxxMw->f	
 !"=7##'@@##t+,,-E""f,%e,+0D''( ??Q&&RYY-C-CG-L&M#*??#9#9#DG#D  )9(J(J(L%(L !OO(L " % 	?s+<'='P$))+224 N	||''4:DL'IH###'	? "&x.#'	? )1)?)?!)C&, !&&$*;*;;""tH~. # < "M% NM(    	 f.D||**:&\XXf%&\H~+YYH~hhw'Y + H	4  7567se   /CM! 3J97J4AJ9M! A7K
 AM! 4J99
KM! 
BMM! MM! ! NNc                 *   UR                    SU S    3nU S   nUSL a  S n U R                  SS 5      nU R                  SS5      nU(       Ga  UR                    SU S3nUR                  R                  U5      =(       d    / nU(       GaR  [        U5      US	-
  :X  Ga?  UR                    SU S
3nU V	s/ s H5  n	[        R
                  " UR                  R                  U	5      5      S   PM7     n
n	U
R                  U S   5        XS'   X@S'   [        R
                  " UR                  R                  U5      5      U S'   U R                  SS 5        U R                  SS 5        U R                  SS 5      (       a  U R                  SS 5      U S'   [        XS9  O[        X5        UR                  R                  U5        UR                  R                  Xh/5        g UR                  U5        UR                  R                  XgU5        U R                  SS 5      (       a  [        U S   UU S   U S   US9  UR                  R                  U[        R                  " U 5      U5        g s  sn	f ! [         a    [        R                   " S5         g f = f)N:r   r   Tr9   
iter_countr   z:keysr>   z:argsr%   r@   iter_cached)r   r8   r:   r;   rE   )list_keyr+   cacherQ   r   loadsappendr.   r,   r-   delete_manysetr   dumpsrW   r   rX   )r!   r   task_keytimeoutr9   ra   	group_key
group_list
group_argskresultss              r3   r,   r,      sO   //"!DJ<0H8nG$,7$'XXlA.
!??+1UG59I)))4:Jc*oa? &0%>
 (' "''(8(8(;<XF'   tH~.!(X"T
,226<<3C3CJ3OPVt,$'88M400%)XXmT%BDN4d+((4(())@Ah'LLYG<xx&&M>f! 	=#6#6t#<gF?@  7567s,   BI/ 5<I*1C,I/ BI/ *I/ / JJ)N)'multiprocessing.processr   multiprocessing.queuesr   djangor   r   django.apps.registryr   django.utils.translationr   r(   check_apps_ready
exceptionsAppRegistryNotReadysetupdjango_q.brokersr	   r
   django_q.confr   r   r   django_q.modelsr   r   django_q.signalsr   django_q.signingr   django_q.tasksr   django_q.utilsr   r   ModuleNotFoundErrorr4   r-   r,   rF   r5   r3   <module>r      s    3 (  % 6 0 4 4 ) ) * & F
-P% -P -P`R7F R7j17f 17q ** 
LLN  Ls#   B (B; /B87B8;CC