hQi(TddlZddlZddlZddlmZddlmZddlmZGddZ y)N)BackgroundScheduler) CronTrigger)IntervalTriggercBeZdZdZdZdZdZd dZdZdZ dZ d Z y ) SchedulerServiceu Servizio di backend per la schedulazione e l'esecuzione di task. È completamente "headless" e non ha un'interfaccia grafica. La sua configurazione è gestita tramite un file JSON esterno. c||_|jd|_td|_|jj |_y)N config_file Europe/Rome)timezone)coregetr r schedulerget_python_executablepython_executable)selfcore_apiconfigs W/mnt/ssd/data/python-lab/Jarvis-Cognitive/services/schedulerservice/schedulerservice.py__init__zSchedulerService.__init__s; !::m4,mD!%!@!@!Bc|jd|js|jddy|j|jj |jdy)z,Avvia il servizio e carica i job schedulati.zAvvio servizio...uRNessun 'config_file' specificato per lo scheduler. Il servizio non eseguirà task.warningNzServizio avviato e operativo.)logr _load_jobs_from_filerstartrs rrzSchedulerService.startsT $% HHikt u  !!#  01rc|jd|jjr|jjd|jdy)z"Ferma lo scheduler in modo pulito.zArresto servizio...F)waitzServizio fermato.N)rrrunningshutdownrs rstopzSchedulerService.stop s> &' >> ! ! NN # # # / $%rcB|jjd||y)z+Metodo di logging standard per il servizio.z [SCHEDULER] N)r r)rmessagelevels rrzSchedulerService.log's WI.6rc|jj|j}|D]^}|j|}|s|jj |j |dg||d|j d|dd`y)z7Carica e imposta i job dal file di configurazione JSON. script_pathid)argstriggerr'zJob 'z ' caricato.N)rremove_all_jobsget_jobs_config_create_triggeradd_job _run_taskr)r jobs_datajob_infor)s rrz%SchedulerService._load_jobs_from_file,s &&(((* ! >H**84G&&NN"=12#~ ' 5$ 0 <= >rc:|jd}|dk(r Output: z ERRORE task 'r8z > Errore: zERRORE imprevisto task 'z': )rospathbasenamelowerendswithr subprocessrunstdoutstripCalledProcessErrorstderr Exception)rr&commandresultes rr.zSchedulerService._run_taskGs < 0 0 =>?@     ' ' .--{;G    ) )% 0"mG HH(?@A,, F HH}RWW%5%5k%B$C2F Pxx=)9(:;WEE ` HH/0@0@0M/NcRSQTUW^ _ _ `s&8BD>>HA,G H5H  Hc |j}tjj|s4tjj |j j |}t|dd5}tj|cdddS#1swYyxYw#ttjf$rgcYSt$r!}|jd|dgcYd}~Sd}~wwxYw)z `<rr) rArVrF!apscheduler.schedulers.backgroundrapscheduler.triggers.cronrapscheduler.triggers.intervalrrrarrres# A19jjr