2014-01-17 2 views
1

Я только что реализовал модули на GAE и пытаюсь запустить задание Cron из определенного модуля. Мой app.yaml имеет следующие значения: в верхней частиGAE Python - задание Cron не выполняется на целевом модуле

application: myapp 
module: default 
version: 1 
runtime: python27 
api_version: 1 
threadsafe: true 

handlers: 
#all handlers 

reporting.yaml для модуля Я пытаюсь активировать имеет следующие параметры:

application: myapp 
module: reporting 
version: 1 
instance_class: B4 
runtime: python27 
api_version: 1 
threadsafe: true 

handlers: 
#same handlers as app.yaml 

Наконец мой cron.yaml выглядит следующим образом :

cron: 
- description: update reports 
    url: /update 
    schedule: every day 12:00 
    target: reporting 

Мне нужен модуль, потому что задание требует больше памяти, чем предлагает обычный экземпляр. По какой-то причине, однако, когда я смотрю в Журналах моего приложения, он продолжает выполнять задание cron по модулю по умолчанию. Почему он не принимает целевой параметр?

ответ

1

Оказывается, я пропустил, чтобы загрузить сам модуль с помощью следующей команды:

appcfg update app.yaml reporting.yaml 

После этого, целевой параметр работал.

+0

Можете ли вы рассказать мне, как правильно настроить обработчики для вашей работы cron? У меня есть аналогичная проблема, когда я пытаюсь загрузить другой модуль, которому требуется больше памяти ... просто не уверен, как настроить обработчики, чтобы запустить скрипт * .py в качестве задания cron. Так, например, у меня есть abc.py, который я хочу запустить как задание cron, которое является частью module.yaml. Заранее спасибо – user3058197

+0

Кроме того, вам нужно было обновить dispatch.yaml? Благодарю. – user3058197

+0

Я не использую distpatch.yaml, поэтому, я думаю, вам не нужно его обновлять. Мой обработчик в этом случае будет первой строкой «url:/update», а затем второй строкой «script: update.app», которая вызвала бы приложение из update.py – Vincent

0

Пожалуйста, ознакомьтесь с нижеследующим текстом от GAE document - целевой элемент для версии не модуля.

Если целевой параметр был установлен на работу, запрос отправляется на указанный версии.

Как направить задание cron вашему целевому модулю, как приведенный ниже примерный код в GAE document?

import urllib2 
from google.appengine.api import modules 

url = "http://%s/" % modules.get_hostname(module="reporting") 
try: 
    result = urllib2.urlopen(url) 
    doSomethingWithResult(result) 
except urllib2.URLError, e: 
    handleError(e) 
+0

Спасибо за ваш вход Wonil. Оказывается, мне просто нужно было обновить модуль должным образом. – Vincent

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