2012-05-01 8 views
4

Я только начинаю с Google App Engine, поэтому я все еще учась настраивать все. Я написал скрипт под названием parsexml.py, который я хочу запускать каждые 10 минут или около того. Этот файл находится в моем главном каталоге, наряду с main.py, app.yaml и т.д. Как я понимаю, мне нужно создать новый файл, cron.yaml который выглядит следующим образом:Настройка работы cron в google app engine python

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

Я не уверен, что мне нужно, чтобы положить в поле URL. Я также не уверен, что что-то еще нужно. Мне нужно вообще изменить файл app.yaml? Где указать имя моего файла parsexml.py?

ответ

9

Брайан,

Вам необходимо обновить как app.yaml и cron.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 

Как и в 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 для обработки запросов.

+0

Это также отлично работает, если он добавит обработчик cron к существующему WSGI-приложению - в этом случае app.yaml, скорее всего, не потребуется изменять. –

+0

Добавлен ответ. – bossylobster

1

URL-адрес используется для запуска сценария ру для хрон

в основном в вашем 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 запустил мир привет, вам нужно установить URL-адрес как url: /helloworld.py

+0

Так что я бы поставил «url: /parsexml.py»? –

+0

, если это URL-адрес в вашем app.yaml – anselm

1

В GAE все действия выполняются с помощью URL-адресов. Вы не можете просто запускать произвольный скрипт как cron: вам нужно сделать этот скрипт обработчиком и указать ему URL-адрес, как и любое другое представление в вашем проекте.

Итак, сопоставьте URL-адрес вашего сценария в app.yaml, отредактируйте скрипт, чтобы сделать его обработчиком, и используйте этот URL-адрес в cron.yaml.

Смежные вопросы