Любое задание, для которого истекло время и которое не похоронено или touch
ed, возвращается в очередь готовности для резервирования.
Я опубликовал в другом месте об использовании Supervisord и сценариев оболочки для запуска рабочих. Преимущество в том, что большую часть времени вы, вероятно, не против немного подождать, пока рабочие места заканчиваются чисто. Вы можете заставить supervisord уничтожить сценарии bash, которые запускают рабочий сценарий, а когда сам сценарий завершится, просто завершится, поскольку его нельзя перезапустить.
Другой способ - поместить сообщение с наивысшим приоритетом (0) в трубу, которую прослушивают работники, которая заставит работников сначала удалить сообщение, а затем выйти. Я настраиваю сценарии оболочки для проверки определенного возвращаемого значения (от exit($val);
), а затем они также выходят из любого цикла в сценариях оболочки.
В течение некоторого времени я использовал эти методы для Beanstalkd, а также для AWS: SQS: для работы с очередями, когда в системе выполняются миллионы заданий в день.