Как запустить задание mapreduce из cron на GAE Python

У меня есть задание mapreduce, определенное в mapreduce.yaml:

mapreduce:
- name: JobName 
  mapper:
    input_reader: google.appengine.ext.mapreduce.input_readers.DatastoreInputReader
    handler: handler_name
    params:
    - name: entity_kind
      default: KindName

Как запустить из cron? Есть ли какой-то URL-адрес, который может его запустить?


person Pawel Markowski    schedule 03.06.2011    source источник


Ответы (2)


Вы можете запустить задачу mapreduce из любого обработчика AppEngine, используя control.py

from mapreduce import control

mapreduce_id = control.start_map(
    "My Mapper",
    "main.my_mapper",
    "mapreduce.input_readers.DatastoreInputReader",
    {"entity_kind": "models.MyEntity"},
    shard_count=10)
person Chris Farmiloe    schedule 03.06.2011
comment
Я заметил комментарий в файле, в котором говорится, что start_map устарел и вместо него следует использовать map_job.start; этот комментарий мог быть добавлен после того, как был дан этот ответ. - person Eric Walker; 21.06.2014

Да, если вы посмотрите на страницу Начало работы, вы увидите, что вы установите URL-адрес в вашем app.yaml:

handlers:
- url: /mapreduce(/.*)?
  script: mapreduce/main.py
  login: admin

Затем вы можете просто запустить его в обычном режиме App Engine, который в этом примере будет писать cron.yaml следующим образом:

cron:
- description: daily summary job
  url: /mapreduce
  schedule: every 24 hours
person Chris Bunch    schedule 03.06.2011
comment
Это создаст задание cron, которое извлекает страницу администратора mapreduce один раз в день. Он не будет выполнять никаких карт. - person Nick Johnson; 04.06.2011