谷歌应用引擎(python)中的简单cron工作

时间:2012-06-08 01:43:16

标签: python google-app-engine cron scheduled-tasks

我需要帮助在GAE(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()

我通过声明:('/ crontask',CronTask)告诉代码将此类用于cron。

但是没有新条目上传到数据存储区(我认为应该是这样)。而且我知道我访问数据存储的方式不是问题,因为当我尝试手动执行相同的操作(将条目上传到应用程序的非cron部分中的数据存储)时,它会返回相应的结果

所以我需要一些指导,说明我可能做错了什么或错过了什么?是否必须对yaml文件进行一些更改或添加一些其他库?

2 个答案:

答案 0 :(得分:8)

Cron使用GET,而不是POST。将您的def post(self)更改为def get(self)(或其他任何合适的内容)。

答案 1 :(得分:2)

通常python文件以py结尾。处理程序应该说

script: template-123.py

首先在本地测试您的cron作业。您应该能够访问localhost:8000 / _ah / admin,然后单击左侧的Cron Jobs链接。它应该列出你所有的cron作业,你应该能够通过页面上的链接测试它们。首先在dev_appserver上进行调试。