Введение в случайность времени с помощью cron и очереди задач

Мне нужны инженерные разработки, чтобы решить проблему в Google App Engine.

У меня есть небольшое количество заданий, которые выполняются периодически, но я бы хотел, чтобы задания выполнялись в случайное время. Поэтому вместо того, чтобы запускать задание каждый вторник в 14:00, я бы хотел, чтобы оно выполнялось каждый вторник «с 14:00 до 17:00».

В настоящее время я использую следующий алгоритм ...

  1. Задание Cron запускается каждый вторник в 14:00
  2. Обработчик cron находит список конкретных заданий для запуска и создает событие очереди задач для каждой дискретной задачи.
  3. Соответствующий обработчик очереди задач решает, должен ли он действительно запускаться выбор случайного числа от 1 до N. Если случайное число - X, задание выполняется. В противном случае создается новое событие очереди задач, чтобы повторить попытку. У каждой задачи есть максимальное количество попыток очереди, чтобы гарантировать, что задание действительно завершится в какой-то момент.

Я понял, что другим решением было бы создать очередь задач, которая имеет очень медленную скорость и когда задание cron заполняется очередь, он случайным образом переупорядочивает список задач перед этим.

Есть идеи от пользователей App Engine?

5
задан Greg 11 April 2011 в 16:51
поделиться