我在Google App Engine标准上的应用程序中经常执行cron作业,并且它要花费大量的实例时间来执行快速任务。我发现如果我在F1
中将应用程序切换到app.yaml
,实例时间问题就消失了,但是Web前端需要更多的功能(使用F4_1G
)。
似乎一个简单的解决方案是使用App Engine Modules在F1
上运行cron作业,同时将应用程序的其余部分保留在F4_1G
上,但是该文档缺少实际内容码。有人可以请问如何做到这一点吗?
答案 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