【问题标题】:Python Appengine Mapreduce gives Bad Entity Kind on runPython Appengine Mapreduce 在运行时给出了 Bad Entity Kind
【发布时间】:2011-08-14 08:56:42
【问题描述】:

我已经为此苦苦挣扎了好几个小时......

在我的项目中,我在主根目录下的文件夹“project”中定义了我的 models.py。我在“项目”文件夹内的“mapreduce”文件夹中也有 mapreduce 文件。文件系统如下:

主根
-项目文件夹
-> 模型.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。

【问题讨论】:

  • 你的 app.yaml 在哪里?在“主根”或“项目文件夹”中?如果是前者,您的项目文件夹是否有__init__.py
  • 我的 app.yaml 与 mapreduce.yaml 一起位于主根目录中。是的,我的项目文件夹也有一个 init.py。你认为这可能是我的文件结构吗?我也尝试在根目录下使用 mapreduce 文件夹,但无济于事。
  • 您似乎遇到了 mapreduce 如何导入模块的问题。尝试重新排列您的导入,以便 models.py 位于顶层之下。如果这解决了它,您应该向 mapreduce 项目提交一个错误。此外,您不应该修改 mapreduce 包 - 将处理程序放在您自己的包中。

标签: python google-app-engine mapreduce


【解决方案1】:

同样的问题,重新安排工作,但我现在无法重新安排我的文件夹结构。就我而言,我在“项目”目录下有一个 _init_.py。还尝试在 app.yaml 和 mapreduce.yaml 所在的根目录下添加 _init_.py(无济于事)

奇怪的是,我的错误是不同的。使用您的示例,它将是

  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中不是。需要找出原因。正在调查。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多