Можно ли сохранить зависимость между двумя задачами расписания GCP? - PullRequest
0 голосов
/ 28 октября 2019

Я просмотрел документацию по планировщику GCP, но не смог найти функцию зависимости в планировщике GCP. Может кто-нибудь подсказать, пожалуйста, есть ли возможность сохранить зависимость между двумя расписаниями задач.

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

Если в расписании GCP нет функции зависимости, есть ли другие? способ достичь этого? Я знаю, что этого можно добиться с помощью GCP Cloud Composer, но есть ли другой способ?

Ответы [ 2 ]

1 голос
/ 28 октября 2019

Облачный планировщик запускает работу на основе расписаний. Это в значительной степени его цель в жизни. Когда наступает время запуска, он обычно использует Pub / Sub или HTTP для запуска своей работы. Вы не рисовали никаких деталей в своей истории, но я собираюсь предположить, что во время T1, работа J1 срабатывает. В момент времени T2, работа J2 срабатывает. Вы не хотите, чтобы задание J2 срабатывало, если задание J1 не удалось. T2 всегда начинается достаточно далеко после окончания T1, чтобы не было гонки.

Первый проход при решении не запускать J2 в случае сбоя J1 - это сделать J1 записать свое состояние завершения в хранилище данных, такое как DataStore. или FireStore. Когда J2 запускается, он может проверить результаты последнего J1 и определить, следует ли продолжать.

Если вы не хотите включать такую ​​логику в свой реальный код, вы можете создатьинтерфейсная часть логики, которая запускается заданиями, выполняющими проверку защиты перед передачей запроса на запуск в вашу реальную логику.

0 голосов
/ 28 октября 2019

Вы можете сделать это с помощью совместной работы облачного планировщика и облачных задач. Используйте облачный планировщик для запуска первого задания через равные промежутки времени. Если задание выполнено успешно и требует последующей обработки, вы можете создать облачную задачу для запуска последующей обработки. Я предполагаю, что вы хотите, чтобы это произошло в определенное время, и это может быть легко достигнуто с помощью облачных задач, указав scheduleTime.

https://cloud.google.com/tasks/docs/reference/rest/v2/projects.locations.queues.tasks#Task

...