【问题标题】:Avoid overwriting cron jobs on google app engine避免覆盖谷歌应用引擎上的 cron 作业
【发布时间】:2018-09-04 02:52:19
【问题描述】:

我正在使用谷歌应用引擎,并且有 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

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

【问题讨论】:

  • 请注意,您在同一个 GAE 应用程序(项目)中没有 2 个不同的应用程序,而是 2 个不同的服务/模块,并且 cron 配置是应用程序级配置,由所有服务共享应用程序。

标签: google-app-engine cron


【解决方案1】:

当您使用新的 cron.yaml 文件部署第二个服务时,第一个 cron 作业将被覆盖,因为部署时只需要一个 cron.yaml。要同时部署这两个 cron 作业,请将它们合并到一个文件中,如示例 here 所示,然后部署生成的 cron.yaml 文件,如 here 所示。 cron.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

【讨论】:

    【解决方案2】:

    这对您来说可能会失败有几个原因,如果您使用 / 以外的其他内容作为 url,那么找出哪些原因会更容易。 /cron,也许。在查看日志时,这将更容易确定该 url 是否按预期被调用。

    接下来是target。如果您的应用程序版本没有具有指定值作为其版本(或服务,尽管我没有经验),AFAIK,cron 生成的请求将被丢弃。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-12
      • 2023-03-12
      • 2017-09-29
      • 2017-12-09
      • 2014-03-22
      • 2011-08-21
      • 2018-01-28
      相关资源
      最近更新 更多