1

--high_replication --use_sqlite を指定して Python を使用したこのコードがあります。

def delete(self, id):
    product = Product.get_by_id(long(id))
    if product is None:
        self.session.add_flash('Product could not be found', level='error')
        self.redirect_to('products')
    else:
        product.key.delete()
        self.session.add_flash('Product is deleted')
        self.redirect_to('products')

削除後、基本的にすべての製品を照会して表示するページである「製品」ページにリダイレクトします。

私が見つけた唯一のことは、削除されたレコードも表示されていることです。「製品」ページを更新すると、レコードが消えています。

他の人もこれに直面していますか?私にできることはありますか?


編集1:

この動作はローカルでのみ見られますが、本番インフラストラクチャではそうではありません。私は過去に、次のjvm引数を使用してJava sdkでこれを解決しました:

-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20

Python sdk には、アプリケーションにローカルで表示させたい結果整合性の量をシミュレートするのに似たものがありますか?

https://developers.google.com/appengine/docs/java/tools/devserverを参照してください

4

1 に答える 1

2

表示されているのは、devserver がシミュレートする HRD データストアの結果整合性動作です。

https://developers.google.com/appengine/docs/python/datastore/queries#Data_Consistency

結果整合性クエリでは、結果の収集に使用されるインデックスも結果整合性でアクセスされます。その結果、そのようなクエリは、元のクエリ条件に一致しなくなったエンティティを返すことがありますが、強力な一貫性のあるクエリは常にトランザクションの一貫性があります。

于 2013-03-17T22:45:53.853 に答える