我刚开始使用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文件的名称?
答案 0 :(得分:9)
布赖恩,
您需要同时更新app.yaml
和cron.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。