25 нояб. 2011 г.

Обработать все данные в Google App Engine

Иногда возникает ситуация, когда нужно что-то сделать со всеми объектами в хранилище, либо со всеми объектами одного типа.

делается это просто:

1. Скачать с http://code.google.com/intl/en/appengine/downloads.html файл “MapReduce Bundle”

2. Положить папку mapreduce из архива в корень проекта

3. Создать файл mapreduce.yaml с описанием обработчика, например:

mapreduce:
- name: onetimetask
  mapper:
    input_reader: mapreduce.input_readers.DatastoreKeyInputReader
    handler: pages.OneTimeTask.process
    params:
    - name: entity_kind
      default: EMail
    - name: shard_count
      default: 2

означает, что обработчиком будет функция process в модуле pages.OneTimeTask, в функцию передается  одно значение, в данном случае это ключ объекта типа EMail, обработку вести в два потока.

4. Создать функцию, указанную в параметре handler, например

def process(key):

    logging.debug(str(key))

5. Зайти на страницу /mapreduce и запустить задание кнопкой.

Более подробное описание

http://code.google.com/p/appengine-mapreduce/wiki/UserGuidePython

Комментариев нет:

Отправить комментарий