Лучшая практика для запуска Prefect Flow без сервера в Google Cloud - PullRequest
2 голосов
/ 24 апреля 2020

Я начал использовать Prefect для различных проектов, и теперь мне нужно решить, какая стратегия развертывания в GCP будет работать лучше всего. Желательно, чтобы я работал без сервера. Сравнение облачного запуска, облачных функций и App Engine , я склонен к go для последнего, поскольку у него нет ограничения по времени ожидания, в то время как у двух других - 9 соответственно. 15 минут.

Интересно узнать, как люди развернули потоки Prefect без сервера, так что потоки планируются / запускаются для пакетной обработки, в то время как агент автоматически сокращается, когда не используется.

В качестве альтернативы, более Подход classi c заключается в развертывании Prefect на Compute Engine и планировании этого с помощью Cloud Scheduler . Но я чувствую, что это несколько устарело и не соответствует функциональности Префекта и гибкости для будущего развития.

1 Ответ

2 голосов
/ 27 апреля 2020

Интересно узнать, как люди развернули потоки Префекта без сервера, так что потоки планируются / запускаются для пакетной обработки, в то время как агент автоматически сокращается, когда не используется.

Префект имеет сообщение в блоге о развертывании без сервера с AWS Lambda, которое является хорошим планом для того же с GCP. Проблема здесь заключается в масштабировании агентов - агенты работают, опрашивая бэкэнд (будь то самостоятельное развертывание Prefect Server или размещенное Prefect Cloud ) на регулярной основе (каждые ~ 10 секунд) , Одна возможность, которая приходит на ум, - это использовать облачную функцию для ускорения работы агента в процессе, вызванного любым событием пакетной обработки / планирования, о котором вы думаете. Вы также можете использовать аргумент -max-polls CLI или kwarg, чтобы ускорить поиск агента; он сломается, если ничего не найдет после скольких указанных вами попыток опроса. Подробности об этом здесь или о любой из указанных c страниц агента.

Однако это может быть неэффективно для долгосрочных потоков, и вы можете столкнуться с ограничениями ресурсов; возможно, стоит посмотреть на автоматическое развертывание кластера Dask , если рабочие нагрузки достаточно высоки. Префект поддерживает это непосредственно с Kubernetes и имеет агента Kubernetes для взаимодействия с вашим кластером. Я думаю, что это было бы наиболее элегантным и масштабируемым решением без необходимости использовать go маршрутный класс c Compute Engine, который, я согласен, несколько устарел и не обеспечивает отличного автоматического масштабирования или первоклассного управления.

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

Надеюсь, это поможет! :)

...