#295

Есть два крона

Простой кейс: твой сервис работает на двух или трех серверах и у тебя есть задача, которую нужно по cron'у выполнять каждую минуту, например, разбирать очередь задач. Или чистить внешний сторадж. Как разделить таски так, чтобы сервера между собой не дрались?

Есть очень простой хак.

В одном кроне запускаешь свою задачу с ключем --odd, в другом с ключом --even. В самом же коде проверяешь номер задачи (или что угодно). Если он четный и тебе сказали --even — выполняешь, иначе — пропускаешь. И наоборот, скрипт с ключом --odd выполняет только нечетные задачи. Еще так можно по-быстрому распределить большие работы между серверами в одноразовых скриптах.

Easy!

PS: Мнемоническое правило, как запомнить что even — это четное, а odd — нечетное: в слове even — четное количество букв.