在谷歌应用程序引擎python中设置cron作业

时间:2012-05-01 14:42:11

标签: python google-app-engine cron

我刚开始使用Google App Engine,所以我还在学习如何配置所有内容。我写了一个名为parsexml.py的脚本,我想每10分钟左右运行一次。这个文件在我的主目录中,与main.py,app.yaml等一起。据我所知,我需要创建一个新文件cron.yaml,如下所示:

cron:
- description: scrape xml
  url: /
  schedule: every 10 minutes

我不确定我需要在url字段中添加什么。我也不确定是否还需要其他东西。我是否需要更改我的app.yaml文件?我在哪里指定parsexml.py文件的名称?

3 个答案:

答案 0 :(得分:9)

布赖恩,

您需要同时更新app.yamlcron.yaml个文件。在每个中,您都需要指定脚本运行的路径。

app.yaml

handlers:
- url: /path/to/cron
  script: parsexml.py

或者如果你有一个catch all处理程序,你将不需要更改它。例如:

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

cron.yaml

cron:
- description: scrape xml
  url: /path/to/cron
  schedule: every 10 minutes

documentation中,在parsexml.py中,您需要为/path/to/cron指定处理程序并使用WSGI处理程序注册它(或者您可以使用CGI):

from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

class ParseXMLHandler(webapp.RequestHandler):
    def get(self):
        # do something

application = webapp.WSGIApplication([('/path/to/cron', ParseXMLHandler)],
                                     debug=True)
if __name__ == '__main__':
    run_wsgi_app(application)

注意:如果您使用的是Python 2.7运行时,则需要指定script: parsexml.application,其中application是用于处理请求的全局WSGI变量。

答案 1 :(得分:1)

url用于运行cron作业的py脚本

基本上在你的app.yaml

你有

app.yaml
handlers:
- url: /helloworld.py
  script: helloworld.py

在cron.yaml

cron.yaml
- description: scrape xml
  url: /helloworld.py
  schedule: every 10 minutes

如果你想让cron运行hello world,你必须将url设置为url: /helloworld.py

答案 2 :(得分:1)

在GAE中,所有操作都是通过URL完成的。您不能只将一个任意脚本作为cron运行:您需要将该脚本作为处理程序并为其提供一个URL,就像项目中的任何其他视图一样。

因此,在app.yaml中将URL映射到您的脚本,编辑脚本以使其成为处理程序,并在cron.yaml中使用该URL。