Я ищу немного инженерного творчества, чтобы решить проблему в Google App Engine.
У меня есть небольшое количество заданий, которые периодически запускаются, но я бы хотел, чтобы задания выполнялись в случайное время. Поэтому вместо того, чтобы запускать работу каждый вторник в 14:00, я бы хотел, чтобы она выполнялась каждый вторник «между 14:00 и 17:00».
В настоящее время я использую следующий алгоритм ...
- Задание Cron запускается каждый вторник в 14:00.
- Обработчик cron находит список конкретных заданий для запуска и создает событие очереди задач для каждой отдельной задачи.
- Соответствующий обработчик очереди задач решает, должен ли он действительно выполняться, выбирая случайное число от одного до N. Если случайное число равно X, задание выполняется. В противном случае он создает новое событие очереди задач для повторной попытки. Каждое задание имеет максимальное количество попыток очереди, чтобы гарантировать, что задание действительно завершится в какой-то момент.
Я понял, что другим решением было бы создание очереди задач с очень низкой скоростью, и когда задание cron заполняет очередь, оно случайным образом переупорядочивает список задач перед тем, как это сделать.
Есть идеи от пользователей App Engine?