2013-01-18 3 views
7

Sono passato a NDB per una nuova app, che come comprendo include il supporto di memcache 'gratuitamente'.Memoria cache NDB non funzionante su Google App Engine

Così ho messo un soggetto nel datastore:

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() 

In altre richieste ho quindi recuperare utilizzando

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

Ma il ritardo nei test quando distribuito su App Engine mi dice non c'è caching in corso (ovviamente nessuno previsto per la prima chiamata, ma le chiamate successive dovrebbero mostrare una maggiore velocità).

Controllo check Memcache e abbastanza sicuro, zeri sotto ogni metrica. Quindi ovviamente non sto ottenendo qualcosa per quanto riguarda il caching NDB gratuito. Qualcuno può dire di cosa si tratta?

risposta

14

NDB legge solo dalla cache quando si utilizza .get_by_id() (o .get() su una chiave). Non verrà utilizzato quando si utilizza .query().