Lokalen Entwicklungsserver verwenden

Die Google Cloud CLI enthält einen lokalen Entwicklungsserver (dev_appserver.py). Sie können diesen lokalen Entwicklungsserver verwenden, um die Ausführung Ihrer App Engine-Anwendung in der Produktion zu simulieren und um Zugriff auf ältere gebündelte App Engine-Dienste zu nehmen. Die simulierte Umgebung erzwingt gewisse Sandbox-Einschränkungen wie eingeschränkte Systemfunktionen und Modulimporte von Laufzeit-Sprachmodulen. Andere Elemente wie Anfragezeitüberschreitungen oder Kontingente werden hingegen nicht erzwungen.

Der lokale Entwicklungsserver simuliert außerdem die von den Bibliotheken im SDK für App Engine bereitgestellten Dienste, einschließlich Datenspeicher, Memcache und Aufgabenwarteschlangen. Hierzu werden die Aufgaben der Dienste vom Server lokal ausführt. Wenn die Anwendung auf dem Entwicklungsserver ausgeführt wird, können Sie weiterhin Remote API-Aufrufe über die HTTP-Endpunkte der Google API an die Produktionsinfrastruktur senden.

Lokalen Entwicklungsserver einrichten

Für die Ausführung des lokalen Entwicklungsserver-Tools muss Folgendes eingerichtet sein:

  1. Prüfen Sie, ob Sie einen Python 3-Interpreter installiert haben, der mit der von der gcloud CLI erforderlichen Python-Version kompatibel ist.
  2. Prüfen Sie, ob die von Ihnen installierte Google Cloud CLI-Komponente die App Engine-Erweiterung für Python 3 (app-engine-python) enthält:

    gcloud components list
    

    Ist die Komponente app-engine-python nicht installiert, so führen Sie folgenden Befehl aus:

    gcloud components install app-engine-python
    
  3. Führen Sie folgenden Befehl aus, um den Installationspfad des Google Cloud SDK zu suchen:

    gcloud info
    

    Der Befehl gibt das Stammverzeichnis zurück, in dem Sie das Google Cloud SDK installiert haben, z. B.:

    Installation Root: [/Users/myname/google-cloud-sdk]

  4. Suchen Sie das dev_appserver.py-Tool im /bin/-Ordner, in dem Sie die Google Cloud CLI installiert haben. Beispiel:

    CLOUD_SDK_ROOT/bin/dev_appserver.py
    
  5. Notieren Sie sich den Pfad zur Datei dev_appserver.py für später.

Lokalen Entwicklungsserver ausführen

Nachdem Sie den lokalen Entwicklungsserver eingerichtet und die Konfigurationsdatei app.yaml für die Anwendung erstellt haben, können Sie den dev_appserver.py-Befehl für Ihre Anwendung lokal ausführen.

So starten Sie den lokalen Entwicklungsserver:

  1. Führen Sie in dem Verzeichnis, das Ihre app.yaml-Konfigurationsdatei enthält, den dev_appserver.py-Befehl aus.

    dev_appserver.py

    Geben Sie den Verzeichnispfad zur Anwendung an. Beispiel:

    python3 CLOUD_SDK_ROOT/bin/dev_appserver.py PATH_TO_YOUR_APP
    

    Alternativ können Sie die Konfigurationsdatei eines bestimmten Dienstes angeben. Beispiel:

    python3 CLOUD_SDK_ROOT/bin/dev_appserver.py app.yaml
    

    Fügen Sie die Option --port ein, um den Port zu ändern:

    python3 CLOUD_SDK_ROOT/bin/dev_appserver.py --port=9999 PATH_TO_YOUR_APP
    

    goapp serve

    Der goapp serve-Befehl ist im ursprünglichen App Engine SDK für Go enthalten und fasst das zugrunde liegende Python-Tool dev_appserver.py zusammen. Um den lokalen Entwicklungsserver zu starten, führen Sie Folgendes aus:

       goapp serve
    

  2. Der lokale Entwicklungsserver wird jetzt ausgeführt und ist für Anfragen bereit. Rufen Sie http://localhost:8080/ in Ihrem Webbrowser auf, um die Anwendung in Aktion zu sehen.

    Wenn Sie einen benutzerdefinierten Port mit der Option --port angegeben haben, müssen Sie den Port in Ihrem Browser öffnen.

Mit den folgenden Tastenkombinationen können Sie den lokalen Server über die Befehlszeile beenden:

  • macOS oder Linux: Strg + C
  • Windows: Strg + Pause

Anwendungs-IDs angeben

Verwenden Sie die appengine.AppID- Funktion zum Aufrufen der Anwendungs-ID auf dem lokalen Server, z. B. für das Spoofing einer E-Mail-Adresse.

Verwenden Sie die appengine.DefaultVersionHostname- Funktion, um den Hostnamen der ausgeführten Anwendung abzurufen.

Laufzeitumgebung der Anwendung erkennen

Mit der Methode IsDevAppServer() können Sie ermitteln, ob der Code in der Produktionsumgebung oder auf dem lokalen Entwicklungsserver ausgeführt wird. Wenn der Wert true lautet, wird der Code in der lokalen Entwicklungsumgebung ausgeführt. Andernfalls wird er in der Produktion ausgeführt.

Ein Beispiel finden Sie auf GitHub.

Lokalen Datastore-Dienst verwenden

Der lokale Entwicklungsserver simuliert den App Engine Datastore mithilfe einer lokalen Datei, die zwischen Aufrufen des lokalen Servers bestehen bleibt.

Weitere Informationen zu Indexen und index.yaml finden Sie auf der Seite Datenspeicherindexe.

Lokalen Datenspeicher durchsuchen

Wenn die Anwendung mithilfe des lokalen Entwicklungsservers Daten in den lokalen Datenspeicher geschrieben hat, können Sie diese in der lokalen Entwicklungskonsole durchsuchen.

So durchsuchen Sie den lokalen Datenspeicher:

  1. Starten Sie den Entwicklungsserver.

  2. Rufen Sie in der lokalen Entwicklungskonsole den Datastore-Betrachter auf. Die URL lautet http://localhost:8000/datastore.

  3. Sehen Sie sich die Inhalte des lokalen Datenspeichers an.

ID-Zuordnungsrichtlinie angeben

Für die App Engine-Produktionsumgebung können Sie im Datenspeicher festlegen, dass Entitäts-IDs automatisch generiert werden.

Die Richtlinien für die automatische Zuweisung von IDs für den Produktionsserver unterscheiden sich zwar grundlegend von den Richtlinien für den Entwicklungsserver, doch Sie können auch hier die Richtlinie zur automatischen ID-Zuordnung für den lokalen Server angeben.

Verwenden Sie die Option --auto_id_policy, um die Richtlinie für die automatische ID-Zuweisung anzugeben:

  python3 CLOUD_SDK_ROOT/bin/dev_appserver.py --auto_id_policy=sequential

Der Wert für --auto_id_policy kann einer der folgenden sein:

  • scattered: (Standardeinstellung) IDs werden aus einer sich nicht wiederholenden Sequenz von annähernd einheitlich verteilten Ganzzahlen zugewiesen.
  • sequential: IDs werden aus der Sequenz von aufeinanderfolgenden Ganzzahlen zugewiesen.

Lokalen Datastore löschen

Wenn Sie den lokalen Datenspeicher für eine Anwendung löschen möchten, rufen Sie den lokalen Entwicklungsserver auf:

python3 CLOUD_SDK_ROOT/bin/dev_appserver.py --clear_datastore=yes app.yaml

Standort des lokalen Datastore ändern

Zum Ändern des für die Datenspeicherdatei verwendeten Standorts verwenden Sie die Option --datastore_path:

python3 CLOUD_SDK_ROOT/bin/dev_appserver.py --datastore_path=/tmp/myapp_datastore app.yaml

E-Mail-Dienst verwenden

Der lokale Entwicklungsserver kann einen SMTP-Server oder eine lokale Installation von Sendmail nutzen, um E-Mails für Aufrufe an den App Engine-E-Mail-Dienst zu senden.

SMTP verwenden

Zum Aktivieren der E-Mail-Unterstützung mit einem SMTP-Server rufen Sie dev_appserver.py so auf:

python3 [CLOUD_SDK_ROOT]/bin/dev_appserver.py --smtp_host=smtp.example.com --smtp_port=25 \
    --smtp_user=ajohnson --smtp_password=k1tt3ns [PATH_TO_YOUR_APP]

Dabei geben Sie für die Optionen --smtp_host, --smtp_port, --smtp_user und --smtp_password eigene Werte an.

Sendmail verwenden

Zum Aktivieren der E-Mail-Unterstützung mit Sendmail rufen Sie dev_appserver.py so auf:

python3 [CLOUD_SDK_ROOT]/bin/dev_appserver.py --enable_sendmail=yes [PATH_TO_YOUR_APP]

Der lokale Server verwendet dann den Befehl sendmail, um E-Mail-Nachrichten mit der Standardkonfiguration Ihrer Installation zu versenden.

URL-Abrufdienst verwenden

Wenn die Anwendung die URL Fetch API zum Erstellen einer HTTP-Anfrage verwendet, führt der lokale Entwicklungsserver die Anfrage direkt von Ihrem Computer aus. Das Verhalten von URL Fetch auf dem lokalen Server kann sich vom Verhalten in der App Engine-Produktionsumgebung unterscheiden, wenn Sie einen Proxyserver für den Zugriff auf Websites verwenden.

Nutzerdienst verwenden

App Engine bietet einen Nutzerdienst, der die Authentifizierung und Autorisierung für Ihre Anwendung vereinfacht. Der lokale Entwicklungsserver simuliert das Verhalten von Google-Konten mit eigenen Anmelde- und Abmeldeseiten.

Bei der Ausführung auf dem lokalen Entwicklungsserver geben die Funktionen LoginURL und LogoutURL URLs für /_ah/login und /_ah/logout auf dem lokalen Server zurück.

Befehlszeilenargumente

Informationen zu den Befehlsoptionen für den lokalen Entwicklungsserver finden Sie unter Optionen für lokalen Entwicklungsserver.