2017-01-09 34 views
0

我在Google App Engine上的应用程序的cron.xml中配置了一些cron作业。
这些作业每天在我的应用程序版本上运行一次,并在db上做一些工作。
例如cron作业要求v1.myapp.appspot.com ...GAE cron作业意外关闭

几个星期后,这个应用程序实例似乎不再正常工作。它不会像我期望的那样执行cron作业。

在GAE仪表板上,我找到了一个带有cron作业列表的部分,但我看不到我的cron作业。

他们为什么消失?我的配置环境有什么问题?或者为什么谷歌停止执行我的cron作业?

+0

您是否部署了其他版本的应用程序或更新的cron作业,因为该cron作业正在运行? –

+1

也可能帮助显示丢失作业的cron.xml内容 –

+0

也可能是您在后端实例上运行它。检查你的目标和版本,并部署匹配版本和yaml文件(app.yaml,cron.yaml,backend.yaml等) – GAEfan

回答

0

cron作业配置是应用程序范围的配置,它不是特定服务/版本的配置。每个cron部署(无需更新服务/版本即可完成)将覆盖以前部署的部署。

为了避免个人意外的错误,我在应用程序级别配置了一个cron配置文件,并根据需要将其链接到每个服务中。

如果您希望为运行的旧版本保留cron作业,则需要为它添加一个配置条目,使其与该服务/版本匹配的目标匹配,否则当该版本不再是默认值时,cron作业将停止工作一个(如cron的触发请求将走向被定向默认服务/版):

Creating a cron job

<?xml version="1.0" encoding="UTF-8"?> 
<cronentries> 
    <cron> 
    <url>/tasks/summary</url> 
    <target>beta</target> 
    <description>daily summary job</description> 
    <schedule>every 24 hours</schedule> 
    </cron> 
</cronentries> 

目标规范是可选的,并且是一个 服务/版本的名称。如果存在,目标会预先添加到您应用的主机名 ,导致作业被路由到该服务/版本。如果未指定 目标,则作业将以缺省版本的 默认服务运行。