Python Appengine Mapreduce дает Bad Entity Kind при запуске - PullRequest
4 голосов
/ 28 апреля 2011

Я боролся с этим часами ...

В моем проекте мой файл models.py определен в папке «project» под основным корнем. У меня также есть файлы mapreduce в папке «mapreduce», внутри папки «project». Файловая система выглядит так:

Основной корень
-Папка проекта
-> models.py
-> Папка Mapreduce

У меня есть файл mapreduce.yaml, определенный как:

mapreduce:
- name: Advice_Hidden
  mapper:
    input_reader: mapreduce.input_readers.DatastoreInputReader
    handler: mapreduce.main_map_handler.add_hidden
    params:
    - name: entity_kind
      default: project.models.Advice

Но когда я пытаюсь запустить mapreduce, я получаю сообщение об ошибке:

BadReaderParamsError: Bad entity kind: Could not find 'models' on path 'advice'

Кто-нибудь может мне помочь? Следует также отметить, что я использую Django-Piston.

1 Ответ

1 голос
/ 29 ноября 2011

Та же проблема здесь, переупорядочение работ, но я не могу сейчас изменить структуру папок. В моем случае у меня есть _ init _ .py в каталоге "projects". Также попытался добавить _ init _ .py в корневой каталог, где находятся app.yaml и mapreduce.yaml (безрезультатно)

Странно, моя ошибка в другом. Используя ваш пример, это будет

  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/mapreduce/input_readers.py", line 660, in validate
    raise BadReaderParamsError("Bad entity kind: %s" % e)
BadReaderParamsError: Bad entity kind: **Could not find 'models' on path 'project'**

На самом деле, только что обнаружил, что в работе он работает, то есть корневой каталог (где находится app .yaml) находится в sys.path. В SDK это не так. Нужно выяснить почему. Исследуя.

...