Ohashi est impatient de voir deux calendriers de l'Avent le même jour.
Je touche GAE / Py au travail depuis deux ans. Jusqu'à présent, j'ai touché GAE / J et GAE / Go, et comme c'est GAE / Py qui revient à l'origine, j'ai beaucoup de choses à penser, mais après tout GAE est merveilleux, je pense que je n'utilise plus SQL. , Je pense que je n'aurais pas dû forcer cette application dans un magasin de données tous les jours.
En passant, si vous créez et exploitez un service avec GAE, vous voudrez souvent jouer directement avec le magasin de données. Comment allez-vous dans un tel cas?
Je pense qu'il existe à peu près les méthodes suivantes.
Aucune de ces méthodes n'est mauvaise, mais chacune a ses propres problèmes et peut être douloureuse.
Cette fois, je voudrais écrire sur google.appengine.ext.admin.application
qui a résolu les problèmes 1, 2 et 3.
Ce qui suit est juste d'écrire diverses rancunes, donc je pense que vous n'avez pas à le lire.
La visionneuse du magasin de données Cloud Console a été considérablement mise à jour pour vous permettre de mettre à jour les données dans de nombreux cas. Cependant, si vous utilisez ndb avec GAE / Py, ou si vous utilisez votre propre bibliothèque, Goon, etc., si vous mettez à jour directement avec Datastore Viewer, il y a un problème en ce que ** les données Memcache ne sont pas mises à jour **. ..
Lorsque vous rencontrez ce problème, il est difficile de le remarquer, et il existe souvent des différences entre Memcache et Datastore qui peuvent entraîner des échecs.
Dans certains cas, il est nécessaire d'effacer tous les Memcache, ce qui est assez ennuyeux.
En utilisant l 'API distante App Engine, vous pouvez exécuter directement le code ci-dessous sur votre propre PC.
Vous pouvez également interagir avec App Engine comme iPython en utilisant Remote API Shell.
>>> from google.appengine.ext import ndb
>>>
>>> # Fetch 10 keys from the datastore
>>> ndb.Query().fetch(10, keys_only=True)
C'est assez pratique, mais lors de l'écriture d'un processus qui nécessite un échange de données fréquent, tous les appels RPC tels que l'acquisition et l'écriture de données sont une communication HTTP du client vers le serveur AppEngine, ce qui est très lent. Il ya un problème.
De plus, il est ennuyeux qu'une requête HTTP soit envoyée une fois par appel RPC dans le journal.
Lors de l'ajout de propriétés à des données de modèle à grande échelle, une TaskQueue appropriée peut être créée et traitée à la fois.
Pour être honnête, le déploiement est trop gênant, donc je ne veux pas le faire si je le fais en fonctionnement.
google.appengine.ext.admin.application
Lors du lancement local de dev_appserver.py
INFO 2016-12-02 08:30:49,546 admin_server.py:116] Starting admin server at: http://localhost:8000
Admin_server.py a été lancé pour, et vous pouvez utiliser la page d'administration en y accédant. Sur la page d'administration, vous pouvez simuler l'état de la banque de données locale, Memcache, la file d'attente des tâches et la réception de courrier.
Il y a quelque chose appelé "Console interactive", qui vous permet d'écrire directement du code Python et d'envoyer et d'exécuter le code au serveur.
Vous pouvez facilement exécuter le code sans écrire le code dans le fichier dans l'environnement local, et il peut être utilisé pour la maintenance et le débogage.
google.appengine.ext.admin.application
rend ce serveur d'administration local disponible en production et est inclus dans le SDK AppEngine de Python.
Pour utiliser google.appengine.ext.admin.application
, ajoutez une route dans app.yaml.
- url: /adminapplication/.*
script: google.appengine.ext.admin.application
login: admin
Assurez-vous d'ajouter login: admin
.
Si vous oubliez de l'ajouter, n'importe qui pourra exécuter votre code préféré sur votre GAE. Veuillez le faire à vos risques et périls.
Si vous déployez l'application dans cet état, vous pourrez afficher la page Admin avec le chemin attribué.
La raison pour laquelle cela semble un peu différent est probablement parce que l'application sur cette page d'administration est ancienne et n'a pas été mise à jour, seul le côté serveur d'administration a été mis à jour.
Il existe également une "console intractive" sur cette page, où vous pouvez écrire et exécuter du code directement comme vous le feriez dans la version locale.
Bien sûr, tous les modules et bibliothèques utilisés dans mon application peuvent être utilisés, et ndb etc. fonctionnera sans problème. La maintenance sera très simple!
L'utilisation de google.appengine.ext.admin.application
facilite grandement la maintenance des services de production.
De plus, lorsque vous êtes invité à produire un peu de données avec csv, si vous utilisez une instruction d'impression, etc., elles seront affichées dans la zone de texte sur le côté gauche, vous pouvez donc les extraire facilement d'ici.
Cependant, il y a quelques mises en garde. Premièrement, puisque ce mécanisme est le même qu'un gestionnaire normal, il reçoit la limite normale de 60 secondes et divers délais d'expiration de la même manière. Soyez prudent lors de la mise à jour de grandes quantités de données.
Le second est écrit ci-dessus, mais vous devez faire attention à la sécurité car vous pouvez exécuter n'importe quel code. Assurez-vous de spécifier login: admin
Le troisième est évident, mais si vous écrivez un code bâclé, toutes les données seront perdues, ce qui est pénible. C'est toujours une bonne idée d'avoir un mécanisme en place qui vous permet de l'essayer localement, puis d'exécuter du code, de pointer dessus et de le récupérer.
Quand je le fais, mon cerveau semble disparaître un instant.
Même si quelque chose se produit, nous ne pouvons en assumer la responsabilité, veuillez donc l'utiliser à vos propres risques.
Nous espérons que les opérateurs GAE pourront revenir dans les plus brefs délais.
Recommended Posts