Domanda

Uso il lavoro ritardato per gestire il lavoro in background.
Tuttavia ho alcuni compiti che devono essere eseguiti a intervalli regolari. Ad esempio ogni ora, ogni giorno o ogni settimana.

Per ora, quando eseguo l'attività, ne creo una nuova da eseguire in un giorno / settimana / mese.

Comunque non mi piace molto. Se per qualsiasi motivo, l'attività non viene eseguita completamente, non creiamo la prossima e potremmo perdere l'esecuzione dell'attività.

Come gestite questo tipo di cose (con lavoro ritardato) nelle app di rotaie per essere sicuri che l'elenco delle attività regolari rimanga corretto?

È stato utile?

Soluzione

Se hai accesso a Cron, consiglio vivamente Ogni volta

http://github.com/javan/whenever

Specifichi cosa vuoi eseguire e con quale frequenza in un semplice rubino morto e ogni volta che fornisce attività di rake per convertirlo in un crontab e aggiornare il crontab del tuo sistema.

Se non hai accesso a cron frequenti (come io no, dato che siamo su Heroku), allora DJ è la strada da percorrere.

Hai un paio di opzioni.

  1. Fai quello che stai facendo. DJ riproverà ogni attività un certo numero di volte, quindi avrai un po 'di clemenza lì

  2. Metti il ??codice che crea il prossimo lavoro DJ in un blocco sicuro, per assicurarti che venga creato anche dopo un'eccezione o un altro evento negativo

  3. Crea un altro DJ che viene eseguito periodicamente, verifica che esistano i DJ appropriati e creali in caso contrario. Naturalmente, questo è soggetto a errori quanto le altre opzioni, poiché il monitor e il DJ reale funzionano entrambi nello stesso ambiente, ma è qualcosa.

Altri suggerimenti

C'è qualche motivo particolare per cui non dovresti usare cron per questo tipo di cose? O forse qualcosa di più rubino come rufus-scheduler , che è abbastanza facile da usare e molto affidabile.

Se non hai bisogno di fare la fila, questi strumenti sono un modo per andare, penso.

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