Ich versuche, die Effizienz meiner aktuellen Anfrage aus dem Appengine-Datastore zu verbessern. Derzeit verwende ich eine synchrone Methode:
%Vor%Momentan gehe ich blöd durch:
%Vor%Ich möchte dies mit get_multi_async
in eine viel schnellere Abfrage umwandelnMeine Schwierigkeit besteht darin, wie ich das machen kann? Irgendwelche Ideen?
Beste Jon
unter Verwendung der obigen Strukturen ist es möglich und wurde bestätigt, dass Sie dies mit einer Reihe von Tasklets lösen können. Es ist eine SIGNIFICANT Beschleunigung gegenüber der iterativen Methode.
%Vor%Jetzt kommt der Hauptanruf von der Krankenhausfunktion, wo Sie das Krankenhausobjekt (hosp) haben.
%Vor%Na los! Es ist unglaublich effizient und lässt den Zeitplan alle Informationen auf schnellstmögliche Weise innerhalb des GAE-Backbones vervollständigen.
Es ist unmöglich. Ihre zweite Abfrage (ndb.get_multi (b.rooms)) hängt vom Ergebnis Ihrer ersten Abfrage ab. Also funktioniert es async dosnt, da zu diesem Zeitpunkt das (erste) Ergebnis der ersten Abfrage sowieso verfügbar sein muss. NDB macht so etwas im Hintergrund (es puffert bereits die nächsten Objekte von ndb.get_multi (currhosp.buildings), während Sie das erste Ergebnis verarbeiten). Sie können jedoch Denormalisierung verwenden, d. H. Einen großen Tisch mit einem Eintrag pro Gebäude-Raum-Bett-Paar halten und Ihre Ergebnisse aus dieser Tabelle ziehen. Wenn Sie mehr Lese- als Schreibvorgänge in dieser Tabelle haben, erhalten Sie dadurch eine enorme Geschwindigkeitsverbesserung (1 DB-Lesezugriff statt 3).
Tags und Links python asynchronous google-app-engine app-engine-ndb