[PYTHON] Stellen Sie die Verwaltungsseite für die Produktion bereit, um die Wartung zu vereinfachen.

Ohashi ist ungeduldig mit zwei Adventskalendern am selben Tag.

Ich habe GAE / Py bei der Arbeit in den letzten zwei Jahren berührt. Bis jetzt habe ich GAE / J und GAE / Go berührt, und da GAE / Py zum Ursprung zurückkehrt, muss ich über viele Dinge nachdenken, aber schließlich ist GAE wunderbar, ich denke, ich verwende kein SQL mehr. Ich denke, ich hätte diese Anwendung nicht jeden Tag in einen Datenspeicher zwingen sollen.

Übrigens, wenn Sie einen Dienst mit GAE erstellen und betreiben, möchten Sie häufig direkt mit dem Datenspeicher spielen. Wie geht es dir in einem solchen Fall?

Ich denke, es gibt ungefähr die folgenden Methoden.

  1. Ändern Sie mit dem Datenspeicher-Viewer der Cloud-Konsole
  2. Vom Client über die Remote-API treffen
  3. Stellen Sie den Fixstapel bereit und klicken Sie darauf

Keine dieser Methoden ist schlecht, aber jede hat ihre eigenen Probleme und kann schmerzhaft sein.

Dieses Mal möchte ich über "google.appengine.ext.admin.application" schreiben, wodurch die Probleme 1, 2 und 3 behoben wurden.

Der Schmerz, Daten im Datenspeicher zu ändern

Das Folgende schreibt nur verschiedene Groll, also denke ich, dass Sie es nicht lesen müssen.

Beim Ändern mit Datastore Viewer der Cloud Console

Der Cloud Console Datastore Viewer wurde erheblich aktualisiert, damit Sie in einigen Fällen Daten aktualisieren können. Wenn Sie jedoch ndb mit GAE / Py verwenden oder wenn Sie Ihre eigene Bibliothek, Goon usw. verwenden und direkt mit Datastore Viewer aktualisieren, tritt das Problem auf, dass ** Memcache-Daten nicht aktualisiert werden **. ..

Wenn Sie auf dieses Problem stoßen, ist es schwer zu bemerken, und es gibt häufig Unterschiede zwischen Memcache und Datenspeicher, die zu Fehlern führen können.

In einigen Fällen ist es notwendig, den gesamten Memcache zu löschen, was ziemlich ärgerlich ist.

Vom Client über die Remote-API getroffen

Mithilfe der App Engine-Remote-API können Sie den folgenden Code direkt auf Ihrem eigenen PC ausführen.

Sie können auch mit der App Engine wie iPython mithilfe der Remote-API-Shell interagieren.

 >>> from google.appengine.ext import ndb
 >>>
 >>> # Fetch 10 keys from the datastore
 >>> ndb.Query().fetch(10, keys_only=True)

Dies ist recht praktisch, aber beim Schreiben eines Prozesses, der häufigen Datenaustausch erfordert, sind alle RPC-Aufrufe wie Datenerfassung und Schreiben eine HTTP-Kommunikation vom Client zum AppEngine-Server, die sehr langsam ist. Es gibt ein Problem.

Es ist auch ärgerlich, dass eine HTTP-Anforderung einmal pro RPC-Aufruf im Protokoll gesendet wird.

Stellen Sie den Fix-Batch bereit und klicken Sie darauf

Wenn Sie großen Modelldaten Eigenschaften hinzufügen, können Sie eine entsprechende TaskQueue erstellen und alles gleichzeitig verarbeiten.

Um ehrlich zu sein, ist die Bereitstellung zu mühsam, daher möchte ich es nicht tun, wenn ich es im Betrieb mache.

Also google.appengine.ext.admin.application

Lokaler Amdmin-Server

Beim lokalen Starten von 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 wurde für gestartet, und Sie können die Verwaltungsseite verwenden, indem Sie darauf zugreifen. Auf der Verwaltungsseite können Sie den Status des lokalen Datenspeichers, Memcaches, der Task-Warteschlange und des E-Mail-Empfangs simulieren.

Darin befindet sich eine sogenannte "Interaktive Konsole", mit der Sie Python-Code direkt schreiben und den Code an den Server senden und ausführen können.

Kobito.FlIaob.png

Sie können den Code problemlos ausführen, ohne den Code in die Datei in der lokalen Umgebung zu schreiben, und er kann für die Wartung und das Debuggen verwendet werden.

Führen Sie die Admin-Seite in der Produktion aus

google.appengine.ext.admin.application stellt diesen lokalen Admin-Server in der Produktion zur Verfügung und ist im AppEngine SDK von Python enthalten.

Fügen Sie in app.yaml eine Route hinzu, um "google.appengine.ext.admin.application" zu verwenden.

- url: /adminapplication/.*
  script: google.appengine.ext.admin.application
  login: admin

Stellen Sie sicher, dass Sie login: admin hinzufügen. Wenn Sie vergessen, es hinzuzufügen, kann jeder Ihren Lieblingscode auf Ihrer GAE ausführen. Bitte tun Sie dies auf eigenes Risiko.

Wenn Sie die Anwendung in diesem Status bereitstellen, können Sie die Admin-Seite mit dem zugewiesenen Pfad anzeigen.

Kobito.3NQ9jC.png

Der Grund, warum es etwas anders aussieht, ist wahrscheinlich, dass die Anwendung auf dieser Admin-Seite alt ist und nicht aktualisiert wurde, sondern nur die Admin-Serverseite.

Auf dieser Seite befindet sich auch eine "Intractive Console", in der Sie Code direkt wie in der lokalen Version schreiben und ausführen können.

Kobito.ZGst87.png

Natürlich können alle in meiner Anwendung verwendeten Module und Bibliotheken verwendet werden, und ndb usw. funktioniert problemlos. Die Wartung wird sehr einfach sein!

Zusammenfassung und Notizen

Die Verwendung von "google.appengine.ext.admin.application" erleichtert die Wartung von Produktionsdiensten erheblich. Wenn Sie aufgefordert werden, ein paar Daten mit csv auszugeben, wenn Sie eine print-Anweisung usw. verwenden, werden diese im Textbereich auf der linken Seite angezeigt, sodass Sie sie problemlos von hier extrahieren können.

Es gibt jedoch einige Einschränkungen. Erstens, da dieser Mechanismus mit einem normalen Handler identisch ist, erhält er auf die gleiche Weise das normale 60-Sekunden-Limit und verschiedene Zeitüberschreitungen. Seien Sie vorsichtig, wenn Sie große Datenmengen aktualisieren.

Die zweite ist oben geschrieben, aber Sie müssen vorsichtig mit der Sicherheit sein, da Sie jeden Code ausführen können. Stellen Sie sicher, dass Sie "login: admin" angeben

Der dritte ist offensichtlich, aber wenn Sie einen schlampigen Code schreiben, gehen alle Daten verloren, was schmerzhaft ist. Es ist immer eine gute Idee, einen Mechanismus zu haben, mit dem Sie ihn lokal ausprobieren, dann den Code ausführen, darauf zeigen und wiederherstellen können.

Wenn ich es tue, scheint mein Gehirn für einen Moment zu verschwinden.

Selbst wenn etwas passiert, können wir keine Verantwortung übernehmen. Verwenden Sie es daher auf eigenes Risiko.

Wir hoffen, dass die GAE-Betreiber so schnell wie möglich zurückkehren können.

Recommended Posts

Stellen Sie die Verwaltungsseite für die Produktion bereit, um die Wartung zu vereinfachen.
Erleichtern Sie die Anzeige von Python-Modulausnahmen
Stellen Sie das Django-Lernprogramm für IIS bereit ①
Der einfachste Weg, eine Flasche herzustellen
Vereinfachen Sie die Verwendung der Klickfunktion von SikuliX
Tipps, um das Lesen von Python-Hördokumenten zu vereinfachen
[Bachstelze] Fügen Sie dem Bachstelzenprojekt eine Anmeldeseite hinzu