2011-08-30 61 views
5

我已經指定了一個cron作業(在開發中測試),但似乎沒有運行。如何確保工作在生產中工作?Cron作業沒有運行(在開發中)

cron.yaml:

cron: 
- description: cron test gathering 
    url: /test/cron 
    schedule: every 2 minutes from 09:00 to 23:00 

app.yaml中:

application: cron_test 
version: 1 
runtime: python 
api_version: 1 

handlers: 
- url: /.* 
    script: main.py 

main.py:

url_map = [ ('/test/cron', test.CronHandler), 
      ('/error', err.Err404Handler)] 

application = webapp.WSGIApplication(url_map, debug=False) 

def main(): 
    wsgiref.handlers.CGIHandler().run(application) 

if __name__ == "__main__": 
    main() 

FeedCron定義爲:

class CronHandler(webapp.RequestHandler): 

    def get(self):  
     logging.info("NOTE: CronHandler get request"); 
     return None 

我期待在應用程序引擎的日誌中看到「注:CronHandler獲取請求」這一行。我正在使用GoogleAppEngineLauncher應用(版本:1.5.3.1187)開始&停止應用。

回答

3

D'Oh!剛纔看到的SDK文檔中的小字:

當使用Python SDK中,dev_appserver有一個管理界面 ,使您可以在/ _ah /管理/ cron的查看cron作業。

開發服務器不會自動運行您的cron作業。您可以使用本地桌面的cron或計劃任務界面 使用curl或類似工具觸發作業的URL。

+0

那麼你是如何從Localehost觸發Cron作業的? –

2

三年後事情有所改善。

一是Cron作業的路線是:http://localhost:8000/cron

開發服務器(仍然)不自動運行您的cron作業。但是,使用你上面的鏈接可以做兩兩件事:

  1. 單擊「立即運行」按鈕,這實際上觸發URL
  2. 查看時間表,這應該保證工作時的你(萬歲!)將在生產中運行
0

我正在尋找一種方法來模擬本地開發服務器上的cron作業。作爲臨時解決方案,我在本地運行一個python腳本,該腳本訪問cron url並觸發計劃任務。

import urllib2 
import time 
while True: 
    print urllib2.urlopen("http://localhost:9080/cron/jobs/") 
    time.sleep(60) 

在我的情況下,url是http://localhost:9080/cron/jobs/,我每分鐘運行一次。 希望它可以幫助。