2012-06-08 52 views
3

我需要在GAE(python)中實現簡單cron作業的幫助。谷歌應用程序引擎(python)中的簡單cron作業

據我從AppEngine上的文件的理解,我做了在應用程序根目錄中的文件cron.yaml,內容如下:

cron: 
- description: blah blah 
    url: /crontask 
    schedule: every 1 minute 

我的app.yaml文件中有如下內容:

application: template-123 
version: 1 
runtime: python27 
api_version: 1 
threadsafe: true 

handlers: 
- url: /.* 
    script: template-123.app 

我把我所有的應用程序代碼(cron和其他部分)放到一個單獨的文件「template-123.py」中。在代碼中,我實現下列方式的cron:

class CronTask(Handler): 

    def post(self): 
     i=25 
     number = Birthday(day = i) 
     number.put() 

我告訴代碼通過聲明來使用這個類的cron:(「/ crontask」,CronTask)。

但是沒有新條目上傳到數據存儲(我相信它們應該是)。而且我知道這並不是我訪問數據存儲的方式的問題,因爲當我嘗試手動執行相同的操作時(在應用程序的非cron部分將條目上載到數據存儲區中),它會返回適當的值結果。

因此,我需要一些指導,以瞭解我可能會做錯什麼或缺少什麼?是否必須對yaml文件做一些更改或添加其他庫?

回答

2

通常python文件以py結尾。處理程序應該說

script: template-123.py 

先在本地測試您的cron作業。您應該能夠訪問localhost:8000/_ah/admin,然後單擊左側的Cron Jobs鏈接。它應該列出您的所有cron作業,並且您應該能夠使用頁面上的鏈接對它們進行測試。首先在dev_appserver上進行調試。

+3

他使用了python27運行時的一個例子。你的答案適用於python 2.5。您應該澄清它,特別是在回覆剛開始使用App Engine的用戶時。 – alex

+0

好,所以我做了你所說的,顯然有一個問題,我在cron.yaml文件中編寫了「日程安排」。 而不是「每1分鐘」應該是「每1分鐘」。 代碼現在工作正常,感謝您的幫助! (: – afroze

+0

哎呀,我錯過了,很難趕上。很高興你知道了。 – dragonx

8

Cron使用GET,而不是POST。將您的def post(self)更改爲def get(self)(或任何其他適用的)。

+0

是的,太.. ..! – afroze

相關問題