0

我的 GAE Python 应用程序有一种称为“用户”的类型,具有各种自定义字段。最近,当我的应用程序一夜之间没有活动时,我在第二天早上尝试登录时会出错。

在登录期间,我得到一个 id(来自 Facebook),它是数据存储区中实体的 key_name:

    user = User.get_by_key_name(id_from_facebook)
    logging.debug(user.favorite_color)

这会导致错误,因为返回的实体实际上是 google 库中的某个类,因此没有字段“favorite_color”。但是,它正在从数据存储中获取“一些东西”,所以我检查了对象的内容:

    for key in user.__dict__.keys():
      log.debug("%s: %s" % (key, user.__dict__[key]))

这显示了不在我的“用户”类型中的键,例如“_first_name”、“_last_name”和“_email”。

我还尝试从方法内部的“myapp.models”而不是文件顶部导入我的类,但没有任何改变。但是,一旦我关闭了在 GAE 上运行的实例并再次访问我的应用程序以启动一个新实例,它就可以正常工作。

我唯一的线索是我听说我的应用程序导入的内容和 GAE 导入的内容之间存在差异,但没有别的。除了将所有用户复制到新的唯一类型(如“MyUser”)之外,我还能做些什么吗?

编辑:

我发现不需要的类实际上是来自 Kay Framework 的“用户”,它也在我的项目中。但是,我不会在代码中的任何地方导入该类,尤其是在发生错误的模块中。

4

1 回答 1

0

您可能正在Usergoogle.appengine.api.users.

幸运的是,Python 使得这类事情很容易追踪,因为导入是显式的。只需检查模块顶部的导入行,并确定该对象的来源。

于 2012-07-20T07:34:27.887 回答