2012-06-08 53 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

相关问题