Иногда возникает ситуация, когда нужно что-то сделать со всеми объектами в хранилище, либо со всеми объектами одного типа.
делается это просто:
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