基于 App Engine 上的另一个服务预热或启动服务

Warm Up or Start Service Based on Another Service on App Engine

我在一个 App Engine 项目上有两个服务。服务 A 至少有 1 个实例。服务 B 缩放到 0。我希望当服务 A 收到请求时,服务 B 会收到预热请​​求,或者以某种方式启动。这是因为 Web 应用程序的用户将主要与服务 A 进行交互,而服务 B 仅执行几项繁重的任务,如果一直执行这些任务成本会很高。但是,当用户处于活动状态时,我希望服务 B 准备就绪。

换句话说,我需要服务B有一个空闲的实例,只有在最近使用服务A时才可用。有没有办法执行此操作?

最简单的方法就是使用 dispatch.yaml:

https://cloud.google.com/appengine/docs/standard/python/reference/dispatch-yaml

然后,在服务 A 中创建一个 @before_request 处理程序(这是一个 Flask 的东西),并让它 ping 服务 B 预热 url。

您还可以为每个服务创建单独的 yaml 文件,并在 serviceB.yaml 中拥有您想要的 url 处理程序(但不在 serviceA.yaml 中)。

https://cloud.google.com/appengine/docs/standard/python3/configuration-files

提示:确保使用 gcloud deploy

部署每个新创建的 yaml 文件