【问题标题】:Simple cron job in google app engine (python)谷歌应用引擎(python)中的简单cron作业
【发布时间】:2012-06-12 02:45:38
【问题描述】:

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

我告诉代码将这个类用于 cron,方法是:('/crontask', CronTask)。

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

所以我需要一些指导来了解我可能做错了什么或遗漏了什么?是否必须对 yaml 文件进行更多更改或添加一些其他库?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      script: template-123.py
      

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

      【讨论】:

      • 他使用了 python27 运行时的示例。您的答案适用于 python 2.5。您应该澄清这一点,尤其是在回复刚开始使用 App Engine 的用户时。
      • 好的,我照你说的做了,显然我在 cron.yaml 文件中编写“schedule”的方式存在问题。而不是“每 1 分钟”,它应该是“每 1 分钟”。代码现在运行良好,感谢您的帮助! (:
      • 哎呀,我错过了。很难抓住。很高兴你明白了。
      猜你喜欢
      • 2023-03-12
      • 1970-01-01
      • 2011-08-21
      • 2018-09-04
      • 2017-12-09
      • 2015-01-16
      • 2016-02-18
      • 2019-08-02
      • 2014-03-22
      相关资源
      最近更新 更多