避免在谷歌应用引擎上覆盖cron作业

时间:2018-03-26 03:06:53

标签: google-app-engine cron

我正在使用谷歌应用引擎,并有2个应用程序使用cron作业来安排事件。我可以使用gcloud app deploy app.yaml cron.yaml部署这两个应用程序。即使两个应用程序都已部署并正在运行,但实际上只运行了一个cron作业。这就是文件的样子。

首先是cron.yaml

cron:
- description: "GET first group"
  url: /
  schedule: every 5 minutes
  target: pubsubone

第二次cron.yaml

cron:
- description: "GET second group"
  url: /
  schedule: every 5 minutes
  target: pubsubtwo

这些文件位于不同的文件夹中,并与不同的应用程序相关联。

2 个答案:

答案 0 :(得分:2)

使用新的cron.yaml文件部署第二个服务时,第一个cron作业会被覆盖,因为预计只有一个cron.yaml用于部署。要部署两个cron作业,请将它们同时加入单个文件中,如示例here中所示,然后部署生成的cron.yaml文件,如图所示herecron.yaml应如下所示:

cron: 
- description: "GET first group" 
url: / 
schedule: every 5 minutes 
target: pubsubone 
- description: "GET second group" 
url: / 
schedule: every 5 minutes 
target: pubsubtwo 

部署它的命令行就是这个:

$ gcloud app deploy cron.yaml

答案 1 :(得分:1)

有几个原因可能导致您失败,如果您使用/之外的其他内容作为网址,那么整理出来会更容易。也许/cron。在查看日志时,这样可以更容易地确定网址是按预期调用的。

接下来是target。如果您的应用版本没有活动版本具有指定值作为其版本(或服务,但我没有相关经验),AFAIK,cron生成的请求将获得掉在地上。