Порядок выполнения заданий в delayed_job - PullRequest
2 голосов
/ 16 декабря 2010

У меня есть приложение rails с плагином https://github.com/tobi/delayed_job

Иногда порядок выполнения заданий не совпадает с порядком их создания.

Мне бы хотелосьзадания, которые должны быть выполнены в том же порядке, в котором они были созданы, как и в некоторых случаях для выполнения задания, важно, чтобы предыдущее задание было успешно выполнено.

Пожалуйста, помогите.* С уважением, Панкадж

Ответы [ 2 ]

0 голосов
/ 16 декабря 2010

Насколько я понимаю, невыполненные задания перенесены на повторные попытки на более позднее время.

"При сбое задание снова планируется через 5 секунд + N ** 4, где N - количество повторных попыток." Из раздела «Настройка» README.textile .

Я предполагаю, что оставшиеся задания будут обработаны за это время. Возможно, вы захотите контролировать вашу таблицу delayed_job и посмотреть, есть ли в каких-либо заданиях значение поля last_error, отличное от NULL.

Это также может зависеть от того, сколько рабочих процессов у вас есть. Работники delayed_job убирают задания из таблицы delayed_jobs по порядку, но нет гарантии, что работники выполнят свои задачи по порядку.

0 голосов
/ 16 декабря 2010

Трудно сказать, не видя точно, как вы создаете свои задания, но единственное, что влияет на порядок выполнения, за исключением времени созданного_атт, - это приоритет, установленный для задания.Я не знаю различий между используемым вами тоби-форком и форком коллектива, но это из документации коллектива:

По умолчанию все задания планируются с приоритетом = 0, который является высшим приоритетом.,Вы можете изменить это, установив Delayed :: Worker.default_priority на что-то другое.Меньшие числа имеют более высокий приоритет.

А из миграции:

table.integer: priority,: default => 0 # Позволяет некоторым заданиям переходить на передний планочередь

И, конечно, вы можете указать приоритет вручную при создании рабочих мест.

...