2013-01-18 17 views
7

Przełączyłem się na NDB na nową aplikację, która, jak rozumiem, zawiera wsparcie dla memcache "za darmo".Buforowanie NDB nie działa w Google App Engine

Włożyłem więc podmiot w magazynie danych:

class MyStorage(ndb.Model): 
    pickled_data = ndb.BlobProperty() 

obj = MyStorage(parent=ndb.Key('top_level_key', 'second_level_key'), pickled_data = pickle.dumps(my_attr)) 
obj.put() 

W innych żądań I następnie pobrać za pomocą

obj = pickle.loads(MyStorage.query(ancestor = ndb.Key('top_level_key', 'second_level_key')).get().pickled_data) 

ale opóźnienie w testowanie go po wdrożeniu na app silnika informuje mnie nie ma buforowania dzieje się (oczywiście nikt nie oczekiwał pierwszego połączenia, ale kolejne połączenia powinny pokazywać przyspieszenie).

Sprawdzam Memcache Viewer i na pewno, zera pod każdą miarą. Więc oczywiście nie dostaję czegoś co dotyczy darmowego buforowania NDB. Czy ktoś może wskazać, co to jest?

Odpowiedz

14

NDB odczyta tylko z pamięci podręcznej, gdy użyjesz .get_by_id() (lub dla klucza). Nie będzie używane, gdy użyjesz .query().