1

私は Eclipse + PyDev を使用して Mac で GAE-Python 2.7 用に開発しています。SDK 1.7.6 (新しい dev_appserver が導入された場所) 以降、「DuplicatePropertyError」が 5 回中 4 回 (平均で) 発生しています。最初のリクエストを実行します。また、最初のリクエストがうまくいったとしても、その後のリクエストでエラーが表示されることがあります。

このエラーは開発でのみ発生し (本番環境ではすべて正常に動作します)、1.7.6 より前では、このようなことはありませんでした。

これまでのところ、アプリのデバッグを続行できるようにするために old_dev_appserver を使用していたため、この問題にはあまり注意を払っていませんでした (Google は新しい開発サーバーで ipc に stdin/stdout を使用することで 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

ちょうどそれを考え出した!明示的な collection_name を指定せずに ReferenceProperty を作成すると、明らかにエラーが発生します。

たとえば、次のエラーが発生する可能性があります。

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 に答える