Ich greife in einer GAE / py-Umgebung auf den Datenspeicher zu, möchte aber manchmal von einer GCE- oder lokalen Umgebung aus darauf zugreifen.
Ich denke, es gibt zwei Möglichkeiten.
--GAEs Remote-API (remote_api_shell.py)
Es scheint einen anderen Ansatz zu geben. ..
Eine solche.
Accessing App Engine with Remote API Eine Standardfunktion ist die Remote-API. Python sdk in gcloud sdk einfügen? Und ich denke, der Pfad ist in "remote_api_shell.py". Weiter auf GAEs App.yaml
app.yaml
application: PROJECT_ID
version: 1
runtime: python27
api_version: 1
##Hier hinzufügen
builtins:
- remote_api: on
Aktivieren Sie remote_api für integrierte Funktionen wie in.
Wenn die Bereitstellung in diesem Status abgeschlossen ist,
$ remote_api_shell.py PROJECT_ID
Auf diese Weise können Sie den Remote-Datenspeicher usw. direkt aus der lokalen Python-Umgebung berühren. Wenn Sie "google.appengine.ext.ndb" in Ihre lokale Umgebung importieren können, können Sie das ndb-Modell auch importieren und auf dieselbe Weise wie in AppEngine darauf zugreifen, was praktisch ist.
from google.appengine.ext import ndb
class MyModel(ndb.Model):
number = ndb.IntegerProperty(default=42)
text = ndb.StringProperty()
#Sie können Remote-Daten genau wie bei GAE abrufen.
models = MyModel.query().fetch()
Beachten Sie jedoch, dass es ziemlich langsam ist. Sehen Sie sich das GAE-Protokoll an, um die Ursache herauszufinden.
Es gibt eine http-Anfrage an / _ah / remote_api
. Wahrscheinlich, weil es für jede Abfrage viele http-Anforderungen gibt, wird der Overhead groß und die Verarbeitung ist schwer.
Die in diesem Jahr veröffentlichte Google Cloud Datastore-API wird wahrscheinlich Leistungsprobleme lösen. Die neue Beta der Google Cloud Datastore API verbessert die Leistung erheblich
Es ist leicht zu verstehen, wenn Sie dies tun, während Sie sich diesen Artikel ansehen. Getting started with the Google Cloud Datastore API
In Situationen, in denen der Befehl gcloud aktiviert ist
$ pip install gcloud
Dann können Sie gcloud-python installieren.
Wenn gcloud auth aktiviert ist, können Sie Datenspeicher-bezogene Bibliotheken aus Python-Skripten und -Konsolen importieren und verwenden.
from gcloud import datastore
client = datastore.Client(PROJECT_ID)
#Dann können Sie Iterator mit Abfrage erhalten.
task = cli.query(kind='Task').fetch()
Überprüfen Sie das Tutorial und die Github-Seite unten für die Verwendung. gcloud-python
Erstens ist die Leistung besser als die Remote-API. Es scheint auch, dass der Iterator jedes Mal kommuniziert und abruft, wenn der Cursor mit einem verzögerten Abruf dorthin kommt, wahrscheinlich weil die Sitzung noch im Datenspeicher eingefügt ist. Wenn Sie versuchen, viele Informationen wie die Remote-API abzurufen, ist es daher weniger wahrscheinlich, dass sie hängen bleiben.
Bitte beachten Sie, dass sich die Version noch in der Beta befindet, sodass sich die technischen Daten ändern können. Darüber hinaus muss die Umgebung von gcloud zertifiziert sein. Da es keinen ORMapper wie ndb gibt, ist die Bearbeitung etwas schwierig und kann sich auf den GAE-Code auswirken.
Der Zugriff über die GCE-Umgebung ist jedoch praktisch, daher sollten Sie diese API von nun an unbedingt verwenden. In der offiziellen Version sind möglicherweise ndb usw. verfügbar.
Die Python-Wrapper-Bibliothek für die Datastore-RPC-API ist offiziell verfügbar. GoogleCloudPlatform/google-cloud-datastore :googledatastore
Derzeit scheint die Wartung nach dem Update der RPC-API detailliert gewesen zu sein.
Es scheint jedoch, dass ich es nicht sehr empfehlen kann, da es authentifizierte Anmeldeinformationen erfordert und die Schnittstelle ein wenig alt ist.
Task Queue
Wenn Sie Push Queue usw. gut verwenden, können Sie die Informationen des Datenspeichers mit einem externen Trigger neu schreiben. Ich habe jedoch nicht das Gefühl, darauf zugreifen zu können, da ich Aufgaben im Voraus vorbereitet habe und es ein Zeitlimit für Aufgaben gibt.
Recommended Posts