3

客観化し、Googleクラウドデータストアのドキュメントに基づいて、私は次のコード内のクエリとバッチ負荷が並列に実行するために期待は:クエリとバッチが同時に実行されないのはなぜですか?

List<Iterable<Key<MyType>>> results = new ArrayList<>(); 
for (...) { 
    results.add(ofy().load() 
     .type(MyType.class) 
     .filter(...) 
     .keys() 
     .iterable()); 
} 
... 
Iterable<MyType> keys = ...; 
Collection<MyType> c = ofy().load().keys(keys).values(); 

しかしトレースは、それは各クエリおよび各エンティティのように見えます負荷が順番に実行されます。

Trace

できますか?

答えて

2

Memcacheからキャッシュされた取得を実行する場合にのみ発生します。同様のコードで、私はdatastore_v3.Get /プットのために期待される非同期動作を確認/削除:それはこの理由を思わ

datastore_v3.Get datastore_v3.Put datastore_v3.Delete

客観化がAsyncMemcacheServiceを使用していないということです。実際には、プロジェクトページにopen issueがあります。これは、ソースをチェックしてgrep -r AsyncMemcacheServiceを実行することによっても確認できます。

シリアルdatastore_v3.RunQuery呼び出しに関しては、ofy()。load()。type(...)。filter(...)。iterable()の呼び出しはreturn immediatelyでは '非同期'実際のDatastoreクエリ自体は、App Engine Datastore API doesn't expose an explicitly async API for queriesとして順次実行されます。

関連する問題