
    is                         d Z ddlZddlmZ ddlmZ ddlmZ  ej                  e	      Z
d e       iZd e       iZddd	d
Z eeeed      Zd Zd Zd Zy)zv
Configuracion centralizada del scheduler con APScheduler.
Gestiona el ciclo de vida de todas las tareas programadas.
    N)AsyncIOScheduler)MemoryJobStore)AsyncIOExecutordefaultT      )coalescemax_instancesmisfire_grace_timezAmerica/Guayaquil)	jobstores	executorsjob_defaultstimezonec                  p    ddl m}  t        j                  | ddddd       t        j                  d	       y
)zh
    Registra todos los jobs en el scheduler.
    Importa y agrega cada job definido en tasks/jobs/
    r   sync_data_jobintervalr   r   zSincronizacion de datosT)triggerminutesidnamereplace_existingu%   📋 Jobs registrados en el schedulerN)tasks.jobs.sync_datar   	scheduleradd_jobloggerinfor   s    //opt/lhia/marcimex/agent/app/tasks/scheduler.pyregister_jobsr   $   s=    
 3 &   KK78    c            	      d   t         j                  rt        j                  d       yt	                t         j                          t        j                  d       t         j                         } | D ]>  }t        j                  d|j                   d|j                   d|j                          @ y)z3Inicia el scheduler con todos los jobs registrados.u%   ⚠️ El scheduler ya esta corriendoNu$   ⏰ Scheduler iniciado correctamentez   - z (ID: z) -> Siguiente: )r   runningr   warningr   startr   get_jobsr   r   next_run_time)jobsjobs     r   start_schedulerr)   8   s    >?OOO
KK67 D YeCHH:VCFF83CCDUDUCVWXYr    c                      t         j                  r,t         j                  d       t        j	                  d       yt        j                  d       y)z%Detiene el scheduler de forma segura.T)waitu%   🛑 Scheduler detenido correctamenteu'   ⚠️ El scheduler no estaba corriendoN)r   r"   shutdownr   r   r#    r    r   stop_schedulerr.   H   s6    %;<@Ar    )__doc__loggingapscheduler.schedulers.asyncior   apscheduler.jobstores.memoryr   apscheduler.executors.asyncior   	getLogger__name__r   r   r   r   r   r   r)   r.   r-   r    r   <module>r6      s     ; 7 9			8	$ ~	
  	
   		9(Y Br    