在googleappenginepython中设置cron作业

2024-05-23 18:59:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚刚开始使用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文件的名称?


Tags: 文件py脚本appurlyamlmaingoogle
3条回答

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

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

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

布莱恩

您需要同时更新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)

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

相关问题 更多 >