ó
    €ÿËj�  ã                   ó¼   • S r SSKrSSKrSSKrSSKrSSKJr  SSKJr  SSK	J
r
  \R                  " S5      rSrSr\R                  " 5       rS	rS
\\   4S jrSS jrg)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            
      óâ  • / n  [        5        nUR                  S5      R                  5         S S S 5         [        R                  " [        R                  R                  5       (       a  [        R                  O[        R                  R                  5      R                  nU[         :  a2  SUS-   S3nU R	                  U5        [
        R                  " SS	U5        [        R&                  (       Ga@  [(        R*                  " 5       [,        -
  [.        :”  Ga   SSKJn  SSKJn  UR9                  SS9 Hù  nUS   nU" U5      n	U	R;                  S5      (       af  U	R;                  S5      (       d  SOSn
SU SU
 SU	R;                  SS5       S3nU R	                  U5        [
        R                  " SU 3SU S3U5        U	R;                  S5      =(       d    SS:¼  d  M¬  SU SU	S    S U	R;                  S!5       3nU R	                  U5        [
        R                  " S"U 3S#U S3U5        Mû     U $ U $ ! , (       d  f       GN= f! [         a@  nU R	                  SU 35        [
        R                  " SS[        U5      5         S nAGNWS nAff = f! [         a!  n["        R%                  S
U5         S nAGNÝS nAff = f! [         a!  n["        R%                  S$U5         S nAU $ S nAff = f)%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              Ú[D:\Ingenieria\TRABAJOS ONLINE\Projects\11- Photo School\backend\services\monitor_service.pyÚ
check_oncer7      sž  € Ø€HðQÜŒX˜Ø�L‰L˜Ó$×-Ñ-Ô/÷ ð0Ü× Ò ´f×6GÑ6G×6NÑ6N×6PÑ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�Ø˜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ñ Nð €Oˆ8€O÷C ŽXûäó QØ�‰Ð:¸1¸#Ð>Ô?Ü×Ò˜YÐ(GÌÈQË×PÒPûðQûô ó 0Ü�‰Ð+¨Q×/Ò/ûð0ûô& ó 	9Ü�K‰KÐ4°a×8Ð8Ø€Oûð	9úsk   „
I Ž H6®I ·B'J ÄCK Ç!AK È6
IÉ I ÉI É
JÉ5JÊJÊ
K ÊJ;Ê;K Ë
K.ËK)Ë)K.c               ƒ   ó"  #   •   [         R                  " [        5      I S h  v•N   [         R                  " [        5      I S h  v•N   MG   N(! [         R                   a    e [         a  n [
        R                  SU SS9   S n A N^S n A ff = f NH7f)NTzErreur du moniteur: %s)Úexc_info)	ÚasyncioÚ	to_threadr7   ÚCancelledErrorr   r#   ÚerrorÚsleepÚ	_INTERVAL)r0   s    r6   Úrun_monitor_loopr@   >   sw   é € Ø
ð	BÜ×#Ò#¤JÓ/×/Ð/ô
 �mŠmœIÓ&×&Ð&ñ á/øÜ×%Ñ%ó 	ØÜó 	BÜ�I‰IÐ.°¸DˆIÖ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      sc   ðñó
 Û Û Û å Ý Ý "à×ÒÐ*Ó+€à€	Ø€Ø�>Š>Ó€Ø€ð$�D˜‘Iô $õN'rH   