[PYTHON] So greifen Sie von außen auf den Datenspeicher zu

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.

Verwenden Sie die Remote-API

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. スクリーンショット 2016-08-09 17.57.32.png

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.

Verwenden Sie die Cloud Datastore-API.

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.

wichtiger Punkt

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.

RPC-API-Wrapper-Bibliothek von Google Cloud Datastore

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

So greifen Sie von außen auf den Datenspeicher zu
So bedienen Sie Linux von außen Vorgehensweise
So greifen Sie über Python auf Wikipedia zu
Zugriff auf RDS von Lambda (Python)
So bedienen Sie Linux von der Konsole aus
So messen Sie die Leitungsgeschwindigkeit vom Terminal aus
[Python] So entfernen Sie doppelte Werte aus der Liste
So erstellen Sie einen Artikel über die Befehlszeile
So "cache-fähiger" Zugriff auf FPGA-Speicher von Linux
Verwendung des Generators
So starten Sie Jupyter Notebook sofort vom Terminal aus
So greifen Sie auf die globale Variable des importierten Moduls zu
So veröffentlichen Sie ein Ticket über die Shogun-API
Wie benutzt man den Dekorateur?
So erhöhen Sie die Achse
So starten Sie die erste Projektion
Berechnen des aus ABC134-D gelernten Rechenaufwands
So melden Sie sich automatisch wie 1Password von der CLI an
So nehmen Sie erste Einstellungen für die Django-Projekterstellung vor
So führen Sie die Exportfunktion des GCP-Datenspeichers automatisch aus
Wie man NAPALM aus dem Web erreicht (NetDevOpsSec echte Lösung)
Wie berechnet man den Autokorrelationskoeffizienten?
Verwendung der Zip-Funktion
Verwendung des optparse-Moduls
Wie man SWIG von waf benutzt
Lesen des SNLI-Datensatzes
So erhalten Sie die Python-Version
So überschreiben Sie die Ausgabe auf die Konsole
So konvertieren Sie von .mgz nach .nii.gz
Verwendung des ConfigParser-Moduls
So erhalten Sie mithilfe der Mastodon-API Follower und Follower von Python
[EC2] So installieren und laden Sie chromedriver über die Befehlszeile herunter
So extrahieren Sie die gewünschte Zeichenfolge aus einem Befehl in Zeile 4
So beheben Sie den Fehler, der in toimage aufgetreten ist (aus PIL.Image Import fromarray als toimage)
So zeigen Sie den Fortschrittsbalken an (tqdm)
Verwendung der Spark ML-Pipeline
So konvertieren Sie das Format einfach aus Markdown
So überprüfen Sie die Version von Django
So lösen Sie das Problem beim Verpacken des Behälters
So aktualisieren Sie Google Sheets von Python
So stellen Sie die Serverzeit auf japanische Zeit ein
So aktualisieren Sie den AMP-Cache manuell
Verwendung von Multi-Core aus der Sicht mehrerer Sprachen
[Linux] Verwendung des Befehls echo
3 Möglichkeiten, auf den Namespace __main__ zuzugreifen
So erhalten Sie eine farbige Ausgabe an die Konsole
Greifen Sie über die iOS-App auf Google Kalender zu
So erstellen Sie ein Repository aus Medien
Verwendung des IPython-Debuggers (ipdb)
Von der Einführung der GoogleCloudPlatform Natural Language API bis zur Verwendung
So überprüfen Sie die lokale GAE über den iPhone-Browser im selben LAN
Lernaufzeichnung (4. Tag) #Wie man den absoluten Pfad vom relativen Pfad erhält
Einstellungen, mit denen auf IPython Notebook von außerhalb des lokalen Bereichs zugegriffen werden kann
So erstellen Sie eine Anwendung aus der Cloud mithilfe des Django-Webframeworks
[Django] So übergeben Sie Werte direkt von Vorlagen-Tags an JavaScript-Variablen
So berechnen Sie die Volatilität einer Marke
Verwendung der C-Bibliothek in Python
So finden Sie den Bereich des Boronoi-Diagramms
So verwenden Sie MkDocs zum ersten Mal