使用App Engine模块在F1实例类中运行cron作业

时间:2019-03-25 17:59:22

标签: google-app-engine

我在Google App Engine标准上的应用程序中经常执行cron作业,并且它要花费大量的实例时间来执行快速任务。我发现如果我在F1中将应用程序切换到app.yaml,实例时间问题就消失了,但是Web前端需要更多的功能(使用F4_1G)。

似乎一个简单的解决方案是使用App Engine ModulesF1上运行cron作业,同时将应用程序的其余部分保留在F4_1G上,但是该文档缺少实际内容码。有人可以请问如何做到这一点吗?

1 个答案:

答案 0 :(得分:2)

这实际上不需要更改代码,它由您的项目配置(yaml)文件控制。

您可以通过在单独的.yaml文件中指定服务(以前的模块)来创建服务,然后部署该服务,然后告诉您的cron作业在该服务上运行。

假设您要创建一个名为“轻量级”的服务。

首先将您现有的app.yaml复制到lighting.yaml, 添加(或修改)“服务”行以显示“服务:轻量级”,并将应用程序实例更新为f1。

(可选)清理处理程序,以便仅显示您的cron实例所需的处理程序。

例如,lightweight.yaml:

application: yourapp
service: lightweight
version: 0-4
runtime: python27
api_version: 1
threadsafe: true    

instance_class: F1

handlers:
-  url: /mycronjob
   script: main.app
   login: admin

然后,在您的cron.yaml中,将服务指定为目标。

cron:
- description: example
  url: /mycronjob 
  schedule: every 5 minutes
  target: lightweight

完成后,使用gcloud或appcfg部署light.yaml和cron。

部署后,您的cron作业将使用f1实例在轻量级服务上运行。您还可以直接在浏览器中访问轻量级服务light.yourapp.appspot.com