在谷歌应用引擎Python中设置定时任务

5

我刚开始使用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个回答

9

Brian,

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

app.yaml

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

如果您有一个全局的异常处理程序,那么您就不需要更改它。例如:

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

cron.yaml:

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

就像 文档中所述,在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变量,用于处理请求。


如果他将cron处理程序添加到现有的WSGI应用程序中,这也可以正常工作-在这种情况下,app.yaml可能不需要修改。 - Nick Johnson

2
在GAE中,所有操作都是通过URL完成的。您不能仅仅将任意脚本作为cron运行:您需要将该脚本制作成一个处理程序,并给它一个URL,就像项目中的任何其他视图一样。
因此,在app.yaml中将URL映射到您的脚本,在编辑脚本以使其成为处理程序,并在cron.yaml中使用该URL。

descriptive answer. Thanks - 0.sh

0

URL 用于运行你的 Cron Job 的 Py 脚本

基本上在你的 app.yaml 文件中

你有

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

in cron.yaml

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

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


那么我会放置 "url:/parsexml.py" 吗? - Brian Yee
如果这是您的 app.yaml 文件中的 URL。 - anselm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接