2012-10-24 9 views
7

Mein einer Warm-up Wunsch zu verstehen ist, dass es eine Anforderung zu „Prime“ ein neues Frontend/Backend-Instanz (oder tun sie nur auf Frontends anwenden?) in Vorbereitung auf den Einsatz in naher Zukunft.Google App Engine: Warmup/Laden Anfragen und Always On

Mein Verständnis eine Ladeanforderung ist, dass es eine Anforderung eine neue Instanz Spin-up ist, weil es jetzt benötigt wird. Daher würde es sich von selbst empfehlen, Instanzen vor der Zeit "aufzuwärmen", um die Lade-Latenz viel weniger zu verkürzen.

Also meine erste Frage ist: Ist mein Verständnis dieser Anfragetypen korrekt, und wenn nicht (oder wenn ich etwas Bemerkenswertes hier vermisse), dann bitte klärende/korrigierende mich zuerst!

Als nächstes bin ich neugierig: Wie bekommen Sie Ihren GAE-Server-Side-Code, um eine Warmup oder Ladeanforderung "zu behandeln"? Gibt es eine bestimmte Schnittstelle, die ich implementieren muss (in Java EE Land, müssen Sie auch implementieren ServiceContextListener, die der Web/App-Container sucht und aufruft, wenn eine App bereitgestellt/gestartet wird). Wenn ja, wie lautet die API dafür? Was ist sonst der "Einstiegspunkt" für eine GAE-App? Im Grunde frage ich mich, welche Klasse/Methode sollte Warmup/Ladeanforderungen behandeln.

Zuletzt frage ich: Welche (allgemeinen) Aktivitäten sollten sich im Startprozess zwischen der Behandlung von Warmup-Anfragen und Ladeanforderungen unterscheiden? Wären sie nicht gleich? Ich frage, weil ich daran interessiert bin, GAEs "Always On" -Premium-Feature zu verwenden, und nicht wirklich sicher, wo ich meinen Startup-Code für die Instanzen platzieren sollte, die immer an sind.

Antwort

7

Aufwärmanforderungen sind eine Möglichkeit, eine Instanz für die Verarbeitung von Datenverkehr vorzubereiten, sodass Ihre Benutzer nicht warten müssen, während eine Java - oder Python - Anwendung alle Importe importiert und anschließend eine instanzspezifische Initialisierung ausführt Cache-Erwärmung), die es tun muss. Aufwärmanforderungen gelten sowohl für Frontends als auch für Backends.

Details wie Sie das tun, hängt von der Sprache ab, aber im Grunde benötigen Sie einen Handler für Anforderungen an /_ah/warmup, die etwas anderes als eine 500 Antwort erzeugt. Für Details, Google für "App-Engine-Warmup-Anfrage" und wählen Sie die entsprechenden Ergebnisse. Warmup-Anforderungen sind standardmäßig für Java aktiviert, aber für Python müssen Sie sie in Ihrem app.yaml aktivieren. Ich habe sie noch nicht für Go getestet.

Eine 'Ladeanforderung', so weit ich weiß, ist nur ein Name für die erste Anforderung, die eine Instanz zu behandeln hat. https://developers.google.com/appengine/kb/java#What_Is_A_Loading_Request hat einige Details.