Ich verwende den App Engine-Massenlader (Python-Laufzeit), um Entitäten in den Datenspeicher hochzuladen. Die Daten, die ich hochlade, sind in einem proprietären Format gespeichert, so dass ich es durch einen eigenen Connector implementiert habe (registriert in bulkload_config.py
), um es in das Python-Zwischenwörterbuch zu konvertieren.App Engine Bulk Loader-Leistung
import google.appengine.ext.bulkload import connector_interface
class MyCustomConnector(connector_interface.ConnectorInterface):
....
#Overridden method
def generate_import_record(self, filename, bulkload_state=None):
....
yeild my_custom_dict
Um diesen neutralen Python-Wörterbuch in eine Datenspeicherentität zu konvertieren, verwende ich eine Importfunktion benutzerdefinierte Post, die ich in meinem YAML definiert habe.
def feature_post_import(input_dict, entity_instance, bulkload_state):
....
return [all_entities_to_put]
Hinweis: Ich bin nicht entity_instance, bulkload_state
in meiner feature_post_import
Funktion. Ich erstelle gerade neue Datenspeichereinheiten (basierend auf meiner input_dict
) und gebe sie zurück.
Jetzt funktioniert alles super. Der Prozess des Massenladens von Daten scheint jedoch zu viel Zeit zu beanspruchen. Für z.B. Eine GB (~ 1.000.000 Einheiten) Daten dauert ~ 20 Stunden. Wie kann ich die Leistung des Massenladeprozesses verbessern? Fehle ich etwas?
Einige der Parameter, die ich mit appcfg.py verwende, sind (10 Threads mit einer Batchgröße von 10 Entitäten pro Thread).
eine Google App Engine Python Gruppe Beitrag verlinkte: http://groups.google.com/group/google-appengine-python/browse_thread/thread/4c8def071a86c840
Update: die Leistung des Bulk Load Prozess zu testen, ich entities
eines 'Test' Kind
geladen. Obwohl diese entity
eine sehr einfache FloatProperty
hat, brauchte ich immer noch die gleiche Menge an Zeit, um diese entities
zu laden.
Ich versuche, werde noch die Bulk Loader Parameter zu variieren, rps_limit
, bandwidth_limit
und http_limit
, um zu sehen, ob ich noch mehr Durchsatz bekommen.
Wenn die Frage etwas verwirrend ist, oder etwas, das ich hinzufügen muss, lassen Sie es mich wissen. – Rahul