【发布时间】:2020-07-10 08:27:12
【问题描述】:
我继承了一个使用 Python 作为主要语言的 GCP 项目。这是我第一次接触 GCP,我担心就最佳实践而言,该项目的结构可能不正确。
该项目由 App-Engine(标准)组成,用于公开几个 HTTP 端点以供 Web 应用程序使用,以及部署用于处理需要后端处理的各种情况的多个“触发”云功能,例如:对象上传到一个桶。目前,项目代码库包含 App-Engine 代码和 Cloud Functions 代码。
代码结构如下:
project/
├── main.py
└── common-ftns/
├── __init__.py
└── initialize-app.py
└── utils.py
└── cloud-ftns/
└── cloud_ftn-1.py
└── cloud_ftn-2.py
└── services/
└── service-1-routes.py
└── service-1.py
└── service-2-routes.py
└── service-2.py
我们正在使用 GCP Cloud Build 来部署整个解决方案,并且一切正常。然而,我担心的是 App-Engine 和 Cloud Functions 中 main.py 的共同使用。 GAE 和 Cloud Functions 似乎都需要存在根级 main.py 文件来初始化应用程序(包括 Flask)以及声明 Cloud Function 入口点。这让我很困扰,因为 Cloud Functions 和 App-Engine 似乎不需要一个共同的起点,更不用说触发处理 Cloud Functions 不需要有 Flask,因为它们没有使用它。
我的问题是:这种类型的结构在 GCP/Python 世界中是否被认为是“最佳实践”?如果没有,那么有没有更好的方法来利用 main.py,这样 Cloud Functions 和 GAE 就不必运行完全相同的启动脚本?
【问题讨论】:
-
考虑是否需要云功能。您可能希望在应用引擎中实现它们。
标签: python google-app-engine google-cloud-platform google-cloud-functions