1

我正在使用 Eclipse + PyDev 在 Mac 上为 GAE-Python 2.7 进行开发,并且由于 SDK 1.7.6(引入了新的 dev_appserver),我在 5 次中出现“DuplicatePropertyError”4 次(平均)当执行第一个请求。此外,即使第一个请求顺利,错误也可能出现在以后的请求中。

此错误仅在开发中发生(在生产中一切正常)并且在 1.7.6 之前我从未遇到过此错误。

我没有过多关注这个问题,因为到目前为止,我一直在使用 old_dev_appserver 以便能够继续调试我的应用程序(谷歌通过在新的开发服务器中使用 stdin/stdout 的 ipc 中断了对 pydevd 的支持) . 但是,由于旧的开发服务器将从 7 月 1 日起停用,我认为是时候开始使用新的了 :-)。

还有其他人遇到这个问题吗?任何解决方案/解决方法?

File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/db/__init__.py", line 515, in __init__
_initialize_properties(cls, name, bases, dct)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/db/__init__.py", line 430, in _initialize_properties
attr.__property_config__(model_class, attr_name)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/db/__init__.py", line 3686, in __property_config__
self.collection_name))
DuplicatePropertyError: Class Organization already has property wagesheetrow_set 
INFO     2013-06-07 15:13:54,864 server.py:585] default: "GET / HTTP/1.1" 500 -
4

1 回答 1

4

刚刚想通了!显然,在创建 ReferenceProperty 而不给它明确的 collection_name 时会出现错误。

例如,这可能会触发错误:

class WageSheetRow(db.Model):
    organization = db.ReferenceProperty(Organization)

这是正确的方法:

class WageSheetRow(db.Model):
    organization = db.ReferenceProperty(Organization, collection_name='aName')

这在旧服务器之前从未发生过,但显然,新服务器(1.7.6+)改变了初始化实例的方式。

还要提到的是,完全相同的代码可能会在一台特定的机器上触发错误,但不会在另一台运行完全相同的代码的机器上触发。

于 2013-06-10T07:36:37.217 回答