2012-06-08 5 views
3

Мне нужна помощь в реализации простого задания cron в GAE (python).Простое задание cron в google app engine (python)

Согласно тому, что я понял из документации Appengine, я сделал файл cron.yaml в корневом каталоге приложения со следующим содержанием:

cron: 
- description: blah blah 
    url: /crontask 
    schedule: every 1 minute 

И мой файл app.yaml имеет следующее содержание:

application: template-123 
version: 1 
runtime: python27 
api_version: 1 
threadsafe: true 

handlers: 
- url: /.* 
    script: template-123.app 

Я сделал весь код приложения (cron и другие части) в один файл «template-123.py». В коде я реализую хрон следующим образом:

class CronTask(Handler): 

    def post(self): 
     i=25 
     number = Birthday(day = i) 
     number.put() 

И я говорю код, чтобы использовать этот класс для хрон, заявив: («/», crontask CronTask).

Однако новые данные не загружаются в хранилище данных (как я считаю, они должны быть). И я знаю, что это не проблема с тем, как я обращаюсь к хранилищу данных, потому что когда я пытаюсь сделать то же самое вручную (загружать записи в хранилище данных в моей не-cron-части приложения), он возвращается с соответствующим Результаты.

Так что мне нужно руководствоваться тем, что я могу делать неправильно или отсутствует? Нужно ли внести некоторые изменения в файлы yaml или добавить некоторые другие библиотеки?

ответ

2

Обычно файлы python заканчиваются в py. обработчик должен сказать

script: template-123.py 

Сначала проверьте работу cron. Вы должны иметь доступ к localhost: 8000/_ah/admin и нажмите ссылку «Cron Jobs» слева. Он должен перечислить все ваши задания cron, и вы сможете проверить их со ссылкой на странице. Сначала отлаживаем dev_appserver.

+3

Он использует пример из среды выполнения python27. Ваш ответ работает на python 2.5. Вы должны прояснить это, особенно при ответе на пользователей, которые только начинают работать с App Engine. – alex

+0

Итак, я сделал то, что вы сказали, и, видимо, возникла проблема с тем, как я написал «расписание» в файле cron.yaml. Вместо «каждые 1 минуту» это должно быть «каждые 1 минуту». Код теперь отлично работает, спасибо за помощь! (: – afroze

+0

oops, я пропустил это. Трудно поймать. Рад, что вы это поняли. – dragonx

8

Cron использует GET, а не POST. Измените свой def post(self) на def get(self) (или что-то еще подходящее).

+0

да это тоже ..! – afroze

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