Планирование запуска задания каждые 2 секунды в облачном планировщике GCP

#firebase #google-cloud-platform #google-cloud-firestore #google-cloud-scheduler

#firebase #google-облачная платформа #google-cloud-firestore #google-cloud-scheduler

Вопрос:

Мое приложение размещено в firebase. Это приложение Angular с базой данных firestore. В настоящее время у меня есть сценарий, в котором мне нужно проверить, не истек ли срок действия чего-либо, а затем действовать в соответствии с ним. Для этого в настоящее время у меня есть приложение узла, запущенное в app engine, у которого запланировано задание cron, которое выполняется каждые 2 секунды, чтобы опросить базу данных firestore на предмет коллекции и посмотреть, старше ли время истечения текущего времени, а затем оно выполняет намеченную задачу.

 cron.schedule("*/2 * * * * *", fn => {
   // code here for intended task
}
  

Из-за этого 2-секундного задания cron мне приходится поддерживать экземпляр в app engine. Я пытался выяснить, могу ли я использовать облачный планировщик для планирования задания, чтобы сэкономить немного денег, не имея экземпляра в App Engine.

Но детализация облачного планировщика выполняется только каждые 1 минуту, и я ищу детализацию в секундах, чтобы я мог запланировать выполнение задания каждые 2 секунды. Есть ли способ добиться этого без необходимости размещать приложение в App Engine.

Ответ №1:

Опрос в целом довольно расточителен, если это вообще возможно, попробуйте заменить его чем-то лучшим.

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

В App Engine (стандартная среда 1-го поколения) я бы просто поставил в очередь намеченную задачу как элемент очереди отложенных задач. Либо в виде абсолютного значения, либо относительно текущего времени. Нет необходимости в опросе, задача будет выполнена всякий раз, когда поступит ее eta.

Я не знаком с angular / firebase, но мне кажется, что Angular Task Service API очень похож.