Ë
    yÌj�  ã                   ó¸   — d Z ddlZddlZddlZddlZddlmZ ddlmZ ddl	m
Z
  ej                  d«      ZdZdZ ej                  «       Zd	Zd
ee   fd„Zdd„Zy)uË   
monitor_service.py â€” surveillance pÃ©riodique (worker leader) : alerte par e-mail
si l'organizer FTP est bloquÃ© ou en erreur rÃ©pÃ©tÃ©e, si le disque est presque
plein ou si la base ne rÃ©pond plus.
é    N)Úconfig)Úget_db)Úalert_servicezmeeconic.monitori,  i   @éx   Úreturnc            
      ó�  — g } 	 t        «       5 }|j                  d«      j                  «        d d d «       	 t        j                  t        j                  j                  «       rt        j                  nt        j                  j                  «      j                  }|t         k  r1d|dz  › d�}| j	                  |«       t        j                  dd	|«       t        j&                  �r-t)        j*                  «       t,        z
  t.        kD  �r
	 ddlm} ddlm} |j9                  d¬«      D ]å  }|d   } ||«      }	|	j;                  d«      r`|	j;                  d«      sdnd}
d|› d|
› d|	j;                  dd«      › d�}| j	                  |«       t        j                  d|› �d|› d�|«       |	j;                  d«      xs ddk\  sŒšd|› d|	d   › d |	j;                  d!«      › �}| j	                  |«       t        j                  d"|› �d#|› d�|«       Œç 	 | S | S # 1 sw Y   �ŒêxY w# t        $ r?}| j	                  d|› �«       t        j                  ddt        |«      «       Y d }~�Œ0d }~ww xY w# t        $ r!}t"        j%                  d
|«       Y d }~�Œ½d }~ww xY w# t        $ r!}t"        j%                  d$|«       Y d }~| S d }~ww xY w)%NzSELECT 1u    Base de donnÃ©es inaccessible : zdb-downu   Base de donnÃ©es inaccessiblezEspace disque faible : i   z Mo libres.zdisk-lowzEspace disque faiblezDisk check failed: %sr   )Úschool_service)Úget_organizer_statusF)Úinclude_inactiveÚidÚstalledÚaliveu   su bucle no estÃ¡ vivoz&hay fotos esperando y no se mueve nadaú[u   ] El organizer estÃ¡ atascado: z (Úpending_countz pendientes).zorganizer-stalled:u   IngestiÃ³n FTP bloqueada (ú)Úconsecutive_errorsé   z] u    errores seguidos. Ãšltimo: Ú
last_errorzorganizer-errors:u&   IngestiÃ³n FTP con errores repetidos (zOrganizer check failed: %s)r   ÚexecuteÚfetchoneÚ	ExceptionÚappendr   ÚnotifyÚstrÚshutilÚ
disk_usager   Ú
PHOTOS_DIRÚexistsÚBACKUPS_DIRÚparentÚfreeÚ_MIN_FREE_BYTESÚlogÚwarningÚORGANIZER_ENABLEDÚtimeÚ	monotonicÚ_STARTEDÚ_GRACE_SECSÚservicesr	   Úservices.organizer_servicer
   Úlist_schoolsÚget)ÚproblemsÚconnÚer!   Úmsgr	   r
   ÚschoolÚsidÚstÚwhys              ú3/var/www/photos/backend/services/monitor_service.pyÚ
check_oncer7      s¡  € Ø€HðQÜ‹Xð 	0˜Ø�L‰L˜Ó$×-Ñ-Ô/÷	0ð0Ü× Ñ ´f×6GÑ6G×6NÑ6NÔ6P¤×!2Ò!2ÔV\×VhÑVh×VoÑVoÓp×uÑuˆØ”/Ò!Ø+¨D°[Ñ,AÐ+BÀ+ÐNˆCØ�O‰O˜CÔ Ü× Ñ  Ð-CÀSÔIô ×Ó¤D§N¡NÓ$4´xÑ$?Ä+Ó$Mð	9Ý/ÝGØ(×5Ñ5ÀuÐ5ÓMò z�Ø˜T‘l�Ù)¨#Ó.�Ø—6‘6˜)Ô$Ø:<¿&¹&À¼/Ñ2ÐOw�CØ˜c˜UÐ"AÀ#ÀÀbÈÏÉÐP_ÐabÓIcÐHdÐdqÐr�CØ—O‘O CÔ(Ü!×(Ñ(Ð+=¸c¸UÐ)CÐGaÐbeÐafÐfgÐEhÐjmÔnØ—F‘FÐ/Ó0Ò5°A¸!Ó;Ø˜c˜U " RÐ(<Ñ%=Ð$>Ð>ZÐ[]×[aÑ[aÐbnÓ[oÐZpÐq�CØ—O‘O CÔ(Ü!×(Ñ(Ð+<¸S¸EÐ)BÐFlÐmpÐlqÐqrÐDsÐuxÕyñzð €Oˆ8€O÷C	0ñ 	0ûäò QØ�‰Ð:¸1¸#Ð>Ô?Ü×Ñ˜YÐ(GÌÈQË×PÒPûðQûô ò 0Ü�‰Ð+¨Q×/Ò/ûð0ûô& ò 	9Ü�K‰KÐ4°a×8Ð8Ø€Oûð	9úse   „
H# Ž H®H# ·BI. ÄB7J ÇAJ ÈH ÈH# È#	I+È,4I&É&I+É.	JÉ7JÊJÊ	KÊ$K Ë Kc               ƒ   ó  K  — 	 	 t        j                  t        «      ƒ d {  –—†  t        j                  t        «      ƒ d {  –—†  ŒD7 Œ&# t         j                  $ r ‚ t        $ r"} t
        j                  d| d¬«       Y d } ~ Œ]d } ~ ww xY w7 ŒH­w)NTzErreur du moniteur: %s)Úexc_info)	ÚasyncioÚ	to_threadr7   ÚCancelledErrorr   r#   ÚerrorÚsleepÚ	_INTERVAL)r0   s    r6   Úrun_monitor_loopr@   >   s{   è ø€ Ø
ð	BÜ×#Ñ#¤JÓ/×/Ð/ô
 �m‰mœIÓ&×&Ð&ð à/ùÜ×%Ñ%ò 	ØÜò 	BÜ�I‰IÐ.°¸DˆI×AÑAûð	Búà&úsI   ‚B…A
 ¡A¢A
 ¦BÁBÁBÁA
 Á
BÁ&BÁ>BÂBÂB)r   N)Ú__doc__r:   Úloggingr   r&   Úcorer   Úcore.dbr   r*   r   Ú	getLoggerr#   r?   r"   r'   r(   r)   Úlistr   r7   r@   © ó    r6   ú<module>rI      sg   ðñó
 Û Û Û å Ý Ý "à€g×ÑÐ*Ó+€à€	Ø€Øˆ4�>‰>Ó€Ø€ð$�D˜‘Ió $ôN'rH   