На сколько я помню, можно было задаче указать статус WORK_FAIL — и она просто будет отмечена как выполненая, но неуспешно. Только поддерживалось это не во всех клиентах на момент моих изысканий :). У них там в документации подробно расписан протокол и там есть много интересных вещей, которые я так понимаю ещё планируются к реализации, по примеру выше обсуждаемого job-timeout — CAN_DO_TIMEOUT.
На самом деле, я бы не стал сильно расчитывать на интеллектуальность распределения задач, по логике разработчиков, такие вещи лучше контролировать извне, ибо тут действительно — всем угодить очень сложно.
Возможность потери задачи сведена к минимуму, она может покинуть сервер только в случае успешного выполнения, тоесть если воркер с задачей упал, воркер выкидывается (по таймауту) из пула, а задача возвращается в начало очереди. Приоритет не поменяется.
Общие приоритеты, на сколько я знаю, работают топорно — сначала высокий приоритет — потом низкий.
Вот возможность таймаута на задачу меня в своё время тоже интересовала, так как в документации ничего про это сказанно не было — полезли в код. И судя по всему они хотели это сделать, но так и не реализовали на данный момент :).
Да, связи между исполнителями и сервером, кроме как приём-отправка задач — нет, тоесть контроль жизни worker'а полностью в Ваших руках. Естественно никто не мешает реализовать это в виде отдельной задачи :).
И опять да, асинхронные задачи не подразумевают под собой дальнейшей работы с резултатом, но опять таки, можно вызвать из самого испольнителя ещё одну задачу с результатом, либо передать этот результат куда-нибудь ещё.
К сожалению не знаком с Capistrano чтобы точно сказать, но на первый взгляд — Capistrano более готовое решение, нацеленное на запуск скриптов на множестве серверов — такое легко реализуется через Gearman. Всё же Gearman продукт гораздо более широкого профиля.
Общие приоритеты, на сколько я знаю, работают топорно — сначала высокий приоритет — потом низкий.
Вот возможность таймаута на задачу меня в своё время тоже интересовала, так как в документации ничего про это сказанно не было — полезли в код. И судя по всему они хотели это сделать, но так и не реализовали на данный момент :).
Да, связи между исполнителями и сервером, кроме как приём-отправка задач — нет, тоесть контроль жизни worker'а полностью в Ваших руках. Естественно никто не мешает реализовать это в виде отдельной задачи :).
И опять да, асинхронные задачи не подразумевают под собой дальнейшей работы с резултатом, но опять таки, можно вызвать из самого испольнителя ещё одну задачу с результатом, либо передать этот результат куда-нибудь ещё.