0

App Engine データストアで重大な問題が発生しています。デバッグの影響を完全に受けていないようです。エンティティを構築した後に変更できません。

この問題は、メイン アプリケーションとコードを共有しない app.yaml で定義されたコンソールから作業する場合にも発生します。コンソールからの例を次に示します。

>>> foo = Topic(name='bar')

>>> foo.name

'bar'

>>> foo.name = 'foo'

>>> foo.name

'bar'

この同じ動作は、アプリケーション内のすべてのエンティティの種類とすべてのプロパティに影響します。エンティティが保存されているかどうかは関係ありません。

数日、数週間、数か月前のリビジョンに戻そうとしましたが、アプリのロジックが壊れているため、実際に数週間、数か月前だった場合は間違いなく気づいていたにもかかわらず、問題はまだ存在しています。Ubuntu と OSX の両方を実行しているさまざまなマシンに存在し、実稼働環境のすべてのアプリ バージョンにも存在し、テストした他の少なくとも 1 つのアプリケーションにも存在します。SDK データストアを消去し、別のポートを使用し、memcache と taskqueue をフラッシュし、SDK を再インストールし、必死になって思いつく他のすべてのデバッグ トリックを行った後も、まだ存在しています。

影響を受けない 1 つの場所は、管理コンソールです。同じ一連のコードで、変更されたエンティティの期待される結果が得られます。問題を引き起こしている可能性があると考えられるすべてのモジュールまたはクラスをインポートした後でも、コンソールは常に期待どおりに動作します。私のコードにはこの問題を引き起こしているものは何もないという別の兆候 (そして、私は完全に正気ではありません)。

数日前の時点で、管理コンソールからできるのと同じように、アプリ内からエンティティを変更できると確信しています。結局のところ、不変エンティティはあまり役に立ちません。

アドバイスをいただければ幸いです。この問題が修正されるまで開発を続けることができないのではないかと心配しています。

4

2 に答える 2

1

どのようなコンソールを使用していますか? それが shell.appspot.com などから派生したものである場合、各>>>プロンプトでのコンソールのグローバルの保存と復元がこれらの問題を引き起こしている可能性が最も高いです。

/_ah/admin/interactive(dev_appserver.py でデフォルトでオンになっている) でインタラクティブ コンソールを使用する場合は、関連するすべてのコードを入力ウィンドウに入れて、一気に実行してみてください。これにより、保存/復元の動作が実験の邪魔になるのを防ぐことができます。

于 2009-10-14T17:37:15.167 に答える
0

おそらくばかげた質問ですが、エンティティを変更した後に.put()を呼び出していますか?コード例から、設定後のプロパティの後続のフェッチが同じセッションにあるのか、別のセッションにあるのかを実際に判断することはできません。

また、関連するモデル定義を貼り付けていただけますか?また、モデルに干渉している可能性のあるApp-Engine固有のライブラリを使用しているかどうかをお知らせください。

于 2009-08-23T12:15:42.890 に答える