2010-12-16 7 views
2

J'ai une application rails avec le plugin https://github.com/tobi/delayed_jobordre d'exécution des travaux dans delayed_job

Quelques fois l'ordre dans lequel les travaux sont exécutés ne sont pas les mêmes que dans leur création. Je souhaite que les travaux soient exécutés dans le même ordre que lors de leur création. Dans certains cas, pour qu'un travail s'exécute, il est important que le travail précédent ait été exécuté avec succès.

Aidez-nous s'il vous plaît.

Cordialement, Pankaj

Répondre

0

Il est difficile de dire sans voir exactement comment vous créez vos travaux, mais la seule chose qui affecte l'ordre d'exécution, sauf pour le temps created_at représente la priorité pour le travail. Je ne connais pas les différences entre la fourche Tobi que vous utilisez et la fourchette de collectiveidea mais c'est de la documentation collectiveidea:

Par défaut, tous les travaux sont planifiés en priorité = 0, ce qui est une priorité absolue. Vous pouvez changer cela en réglant Delayed :: Worker.default_priority sur autre chose. Les nombres inférieurs ont une priorité plus élevée.

et de la migration:

table.integer: priorité: default => 0 # Permet des emplois pour sauter à l'avant de la file d'attente

Et vous pouvez bien sûr spécifiez la priorité manuellement lorsque vous créez vos travaux.

0

Je crois comprendre que les tâches qui échouent sont replanifiées pour des tentatives plus tard.

"En cas d'échec, le travail est planifié de nouveau dans 5 secondes + N ** 4, où N est le nombre de tentatives." De la section de configuration de README.textile.

Je suppose que les tâches restantes seront traitées entre-temps. Vous souhaiterez peut-être surveiller votre table delayed_job et voir si des tâches ont une valeur de champ last_error définie sur autre chose que NULL.

Cela peut également dépendre du nombre de processus de travail dont vous disposez. Les travailleurs de delayed_job suppriment les tâches de la table delayed_jobs, mais il n'y a aucune garantie que les travailleurs termineront leurs tâches dans l'ordre.