我的 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 的“用户”,它也在我的项目中。但是,我不会在代码中的任何地方导入该类,尤其是在发生错误的模块中。