Как помешать слесарю ставить задачи рабочим, которые еще работают?
У меня есть этот работник, время работы которого сильно варьируется от 10 секунд до часа. Я хочу запускать этого работника каждые пять минут. Это нормально, если работа заканчивается в течение пяти минут. Однако, если задание занимает больше времени, Iron.io снова и снова ставит одну и ту же задачу в очередь, и куча задач одного типа накапливается во время работы работника.
Кроме того, крайне важно, чтобы задача не выполнялась одновременно, поэтому максимальный параллелизм для этого работника равен единице.
Итак, мой вопрос: есть ли способ, чтобы Iron.io не ставил в очередь задачи рабочих, которые еще работают?
1 ответ
Лучшим вариантом было бы поставить новую задачу в очередь из кода воркера. Например, ваша задача выполняется в течение 10 секунд - 1 часа и ставится в очередь в конце (последняя строка кода). Это предотвратит накопление задач во время работы воркера.
Отвечая на мой собственный вопрос.
Согласно поддержке Iron.io, невозможно запретить IronWorker ставить задачи рабочим, которые все еще работают. Для таких случаев, как мой, лучше иметь главных работников, которые выполняют планирование, т.е. создают / ставят в очередь задачи из сценария через одну из клиентских библиотек.