J'accède au magasin de données dans un environnement GAE / py, mais parfois je veux y accéder à partir d'un environnement GCE ou local.
Je pense qu'il y a deux manières.
Il semble y avoir une autre approche. ..
Tel.
Accessing App Engine with Remote API
Une fonctionnalité standard est l'API à distance.
Mettre python sdk dans gcloud sdk? Et je pense que le chemin est dans remote_api_shell.py
.
Plus loin sur l'app.yaml de GAE
app.yaml
application: PROJECT_ID
version: 1
runtime: python27
api_version: 1
##Ajouter ici
builtins:
- remote_api: on
Activez remote_api pour les fonctions intégrées comme dans.
Lorsque le déploiement est terminé dans cet état,
$ remote_api_shell.py PROJECT_ID
En faisant cela, vous serez en mesure de toucher directement la banque de données distante, etc. à partir de l'environnement python local.
Si vous pouvez importer google.appengine.ext.ndb
dans votre environnement local, vous pouvez également importer le modèle ndb et y accéder de la même manière que sur AppEngine, ce qui est pratique.
from google.appengine.ext import ndb
class MyModel(ndb.Model):
number = ndb.IntegerProperty(default=42)
text = ndb.StringProperty()
#Vous pouvez obtenir des données à distance comme vous le feriez sur GAE.
models = MyModel.query().fetch()
Cependant, notez que c'est assez lent. En regardant le journal GAE pour découvrir la cause,
Il y a une requête http à / _ah / remote_api
. Probablement parce qu'il y a beaucoup de requêtes http pour chaque requête, la surcharge devient importante et le traitement est lourd.
L'API Google Cloud Datastore publiée cette année est susceptible de résoudre les problèmes de performances. La nouvelle version bêta de l'API Google Cloud Datastore améliore considérablement les performances
Il est facile de comprendre si vous le faites en lisant cet article. Getting started with the Google Cloud Datastore API
Dans les situations où la commande gcloud est activée
$ pip install gcloud
Ensuite, vous pouvez installer gcloud-python.
Si gcloud auth est activé, vous pouvez importer et utiliser des bibliothèques liées à la banque de données à partir de scripts et de consoles Python.
from gcloud import datastore
client = datastore.Client(PROJECT_ID)
#Ensuite, vous pouvez obtenir un itérateur avec une requête.
task = cli.query(kind='Task').fetch()
Consultez le tutoriel et la page github ci-dessous pour savoir comment l'utiliser. gcloud-python
Tout d'abord, les performances sont meilleures que celles de l'API distante. De plus, il semble que l'itérateur communique et récupère également chaque fois que le curseur arrive avec une récupération retardée, probablement parce que la session est toujours collée dans le magasin de données. Par conséquent, lorsque vous essayez d'obtenir beaucoup d'informations comme l'API distante, il est moins susceptible de rester bloqué.
Veuillez noter que la version est toujours en version bêta, les spécifications peuvent donc changer. De plus, l'environnement doit être certifié par gcloud. De plus, comme il n'y a pas d'ORMapper comme ndb, c'est un peu difficile à éditer et cela peut affecter le code GAE.
Cependant, il est pratique d'accéder à partir de l'environnement GCE, vous devez donc absolument utiliser cette API à partir de maintenant. Dans la version officielle, ndb etc. peut être disponible.
La bibliothèque d'encapsulation python pour l'API RPC Datastore est officiellement disponible. GoogleCloudPlatform/google-cloud-datastore :googledatastore
Pour le moment, il semble que la maintenance ait été détaillée suite à la mise à jour de l'API RPC.
Cependant, il semble que je ne peux pas le recommander beaucoup car il nécessite des informations d'identification authentifiées et l'interface est un peu ancienne.
Task Queue
Si vous utilisez correctement Push Queue, etc., vous pouvez réécrire les informations de Datastore avec un déclencheur externe. Cependant, je n'ai pas l'impression de pouvoir y accéder car j'ai préparé des tâches à l'avance et il y a une limite de temps pour les tâches.
Recommended Posts