2017-01-09 39 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> 

目標規範是可選的,並且是一個 服務/版本的名稱。如果存在,目標會預先添加到您應用的主機名 ,導致作業被路由到該服務/版本。如果未指定 目標,則作業將以缺省版本的 默認服務運行。