Domanda

Recentemente abbiamo avuto un problema in cui un'operazione pianificata ColdFusion non ha ripreso dopo un aggiornamento di Windows e il riavvio del server CF. C'è un modo per monitorare la salute delle attività pianificate e di essere avvisati se non sono in esecuzione correttamente? O avrei bisogno di scrivere un compito di analizzare i file di log per questa informazione?

È stato utile?

Soluzione

è possibile utilizzare l'API di amministrazione per ottenere informazioni sulle attività pianificate. la seguente restituisce un array di strutture con informazioni su ogni operazione pianificata. si può quindi scorrere l'array e guardare la variabile last_run.

<cfset arySchedTasks = createobject("java","coldfusion.server.ServiceFactory").getCronService().listall() />

Altri suggerimenti

Se si desidera verificare che le operazioni pianificate stanno lavorando a livello più generale, un modo è quello di pianificare un'operazione "battito cardiaco", in esecuzione come spesso come si desidera. Impostare il compito di aggiornare un contatore, cambiare un timestamp, inviare una mail, attivare un "Io sono vivo" SMS ogni mattina, aggiungere una voce di registro - qualunque cosa ha un senso. Questo non è che tutte le attività sono in esecuzione lo dirà, ma vi dirà che il server è vivo, e il sistema di operazione pianificata si sta lavorando.

Un'altra opzione è quella di incanalare le attività attraverso un unico punto di ingresso - una sorta di front-controller per le attività. Questa delega l'installazione e configurazione dei singoli compiti al codice, piuttosto che l'amministratore CF. Il controller task master includerebbe innescando codice per ogni attività. Pianificare il controller per l'esecuzione a con la frequenza necessaria - così, un unico compito, piuttosto che molti. Nel controllore, qualcosa di simile, forse ogni cinque minuti:

Check the time/date, compare against set of tasks
If time (or frequency) is A, run tasks P,Q,R, log success/failure
If time is B, run tasks S,T, log success/failure
If time is C, run tasks U,V,X, log success/failure    
Send heartbeat with success/failure codes for all relevant tasks

Un vantaggio di questo approccio è che si può esprimere molto più ricca go / no-go flussi di lavoro - hanno eseguire operazioni a frequenze semi-randomizzati, le attività eseguite in base al successo o il fallimento di altri compiti, ecc Se si vede / ricevere l'indicatore di battito cardiaco, si conosce il controller compito ha infatti run.

Un altro semplice opzione. Attivare il file di output per ogni attività e controllare questi file da lavoro indipendente Cron: se il file è stato modificato nel lasso di tempo necessario dovrebbe significare che Utilità di pianificazione è stato eseguito

.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top