Структурирование проекта Google Cloud Platform - PullRequest
2 голосов
/ 17 июня 2019

Я работаю над проектом, в котором много маленьких задач.Некоторые из этих задач связаны и требуют перекрывающегося apis.

task_1/
    main.py
task_2/
    main.py
apis/
    api_1/
    api_2/
    api_3/
test/
    test_api_1.py
    test_api_2.py
    test_task_1.py
    test_task_2.py
    test_task_3.py

Например, task_1 требуется api_1 и api_3, в то время как task_2 необходимо api_1 и api_2.Сначала я пытался использовать Google Cloud Functions для выполнения этих задач, но столкнулся с проблемой, что GCF нужны локальные зависимости, установленные в той же папке, что и задача .Это будет означать дублирование кода из api_1 в task_1.Кроме того, локальное тестирование станет более сложным из-за способа импорта GCF (в отличие от .mylocalpackage.myscript):

Затем можно использовать код из локальной зависимости mylocalpackage:

from mylocalpackage.myscript import foo

Есть ли способ структурировать мою кодовую базу для облегчения развертывания GCF?Из-за моих требований я не могу развернуть каждый API как свой собственный GCF.Поможет ли Google Cloud Run устранить мои проблемы?

Спасибо!

1 Ответ

2 голосов
/ 20 июня 2019

Чтобы использовать облачные функции для этого, вам нужно расположить свой код таким образом, чтобы весь код, от которого зависит функция, присутствовал в каталоге этой функции во время развертывания.Это может быть сделано в качестве пользовательского шага сборки / упаковки для перемещения файлов.

Чтобы использовать Cloud Run для этого, вам нужно создать минимальный веб-сервер HTTP для маршрутизации запросов к каждой из ваших «функций».Это может быть лучше всего сделано путем создания пути для каждой функции, которую вы хотите поддерживать.В этот момент вы воссоздали традиционный веб-сервис с несколькими ресурсами.

Если эти задачи были заданы как Фоновые функции , вы можете подключить интеграцию Pub / Sub Push .

...