nel progetto che sto seguendo, devo monitorare tramite un unico pannello, tutti i vari job sparsi nei nostri server. Capire quali girano e con quale frequenta.
Inizialmente li abbiamo dovuti implementare ciascuno, cominciando con un solo server pilota, per verificare in primis il funzionamento ma anche per aggiugere la chiamata api che comunica con il mio progetto.
Ho esposto un servizio per ricevere i parametri e qui controllo soprattutto che la sintassi della frequenza sia valida, altrimenti tutto quello che avviene in seguito non funzionerà nella maniera corretta. Di seguito uno screen
successivamente lato backend, una volta che il dato è acquisito, verifico la prossima volta che dovrebbe girare lo script grazie alla funzione get_next, e se non mi arriva comunicazione dell'effettivo lancio oppure ho comunicazione del lancio ma non dell'avvenuta fine esecuzione, allora notifico il problema.
Di seguito il pezzo di codice che, recuperando l'ultima esecuzione, calcola quando dovrebbe essere la successiva con la funzione get_next e se la data restituita è inferiore ad ADESSO, siamo di fronte ad un problema catturato
Maybe you might be interested

come usare un token a tempo per resettare la password in python
in questa mia prima esperienza ho usato la classe TimedJSONWebSignatureSerializer sulla versione 3.8
alert = db.session.query(Job.script).distinct().filter(Job.giorno >= periodo_time)
dettagli = {}
for riga in alert:
quale = Job.query.filter_by(script=riga.script).order_by(Job.inizio.desc()).first()
i_anno, i_mese, i_giorno, i_ora, i_minuti, i_secondi = quale.inizio.strftime("%Y %m %d %H %M %S").split(' ')
partiamo_da = datetime(int(i_anno), int(i_mese), int(i_giorno), int(i_ora), int(i_minuti), int(i_secondi))
#entro_il = partiamo_da + timedelta(minutes=500)
cron = croniter.croniter(quale.cron, partiamo_da)
quale.successivo = cron.get_next(datetime)
quale.partiamo_da = partiamo_da
if (datetime.now() > quale.successivo):
quale.avvisa = 'KO'
else:
quale.avvisa = 'OK'
dettagli[riga.script] = quale