Optionen für lokalen Entwicklungsserver

Der lokale Entwicklungsserver (dev_appserver.py) gehört zu den App Engine-Komponenten der gcloud CLI. Dieses Thema enthält erweiterte Informationen zur Verwendung von dev_appserver.py.

Wir empfehlen die Verwendung von Python-Standardtools wie virtualenv zum Erstellen isolierter Umgebungen und pytest zum Ausführen von Einheitentests und Integrationstests, anstatt nur mit dem lokalen Entwicklungsserver dev_appserver zu arbeiten, der mit Google Cloud SDK bereitgestellt wird.

Weitere Informationen zu lokalen Tests finden Sie unter Lokalen Entwicklungsserver ausführen.

Lokales Entwicklungsserver-Tool einrichten

Ein dev_appserver.py-Beispielbefehl kann so aussehen:

python3 CLOUD_SDK_ROOT/bin/dev_appserver.py OPTION yaml_path FILES

Ersetzen Sie dabei Folgendes:

  • CLOUD_SDK_ROOT durch den Pfad zum Stammverzeichnis, in dem Sie die Google Cloud CLI installiert haben. Das Standardverzeichnis ist ./google-cloud-sdk/.
  • OPTION durch ein Flag, das vom lokalen Entwicklungsserver unterstützt wird.
  • FILES gibt eine oder mehrere app.yaml-Dateien für das Positionsargument yaml_path an, und zwar eine pro Dienst.

Eine vollständige Liste der Optionen erhalten Sie über folgenden Befehl:

python3 CLOUD_SDK_ROOT/bin/dev_appserver.py -h

Allgemeine Optionen

Die gängigsten Optionen sind:

--admin_host=ADMIN_HOST
Name des Hosts, mit dem die Verwaltungskonsole des lokalen Entwicklungsservers verbunden werden soll (Standard: localhost).
--admin_port=ADMIN_PORT
Port, mit dem die Verwaltungskonsole des lokalen Entwicklungsservers verbunden werden soll (Standard: 8000).
--addn_host=ADDN_HOST
Mit diesem Argument können Sie zusätzliche HTTP-Host-Headerwerte zulassen, sodass der Server hinter einem Proxy zugänglich gemacht werden kann, ohne die Hostprüfung deaktivieren zu müssen (siehe --enable_host_checking). Zusätzliche Hosts, die mit *. anfangen, lassen alle Subdomains zu. Beispiel: *.example.org lässt host.example.org zu, aber nicht sub.host.example.org oder example.org. Hosts, die mit **. beginnen, ermöglichen Subdomains mit beliebiger Tiefe. Beispiel: **.example.com erlaubt host.example.com und sub.host.example.com, aber nicht example.com. (Standardeinstellung: [])
--allow_skipped_files=...
Machen Sie die in app.yaml skip_files oder static angegebenen Dateien lesbar, damit sie von der Anwendung gelesen werden können (Standardeinstellung: False).
-A APP_ID, --application=...
Legen Sie die Anwendung fest und überschreiben Sie den Anwendungswert aus der Datei app.yaml (Standard: "None").
--appidentity_email_address=...
E-Mail-Adresse, die mit einem Dienstkonto verknüpft ist, das einen herunterladbaren Schlüssel hat. Kann None für keine lokale Anwendungsidentität sein (Standard: „None“).
--appidentity_private_key_path=...
Pfad zur privaten Schlüsseldatei, die dem Dienstkonto zugeordnet ist (.pem-Format). Muss festgelegt werden, wenn appidentity_email_address festgelegt ist (Standardeinstellung: keine).
--api_host=API_HOST
Hostname, an den der API-Server gebunden werden soll (Standard: localhost).
--api_port=API_PORT
Port, an den der Server für API-Aufrufe gebunden werden soll (Standardeinstellung: 0).
--auth_domain=...
Name der Autorisierungsdomain, die verwendet werden soll (Standardeinstellung: gmail.com).
--auto_id_policy=...
Veraltet. Legt fest, wie der lokale Datenspeicher automatische IDs zuweist. Optionen sind sequential oder scattered (Standardeinstellung: scattered).
--automatic_restart=...
Instanzen automatisch starten, wenn für ihr Modul relevante Dateien geändert werden (Standardeinstellung: True).
--blobstore_path=...
Pfad zum Verzeichnis zum Speichern von Blob-Inhalten (standardmäßig, wenn nicht festgelegt, in einem Unterverzeichnis von --storage_path) (Standardeinstellung: keine).
--clear_datastore=yes|no
Löscht die Daten im Datenspeicher und die Verlaufsdateien, bevor der Webserver gestartet wird (Standardeinstellung: no).
--clear_search_indexes...
Löschen Sie die Suchindexe (Standard: False).
--custom_entrypoint=...

Einstiegspunkt für benutzerdefinierte Laufzeitmodule angeben. Dies ist erforderlich, wenn Module dieser Art vorhanden sind. Fügen Sie {port} in den String ein (ohne Anführungszeichen), um die Portnummer als Argument zu übergeben (Standard: ). Beispiel:

--custom_entrypoint="gunicorn -b localhost:{port}
  mymodule:application"
--datastore_consistency_policy {consistent,random,time}

Die Richtlinie, die angewendet wird, um zu entscheiden, ob ein Datenspeicher-Schreibvorgang in globalen Abfragen erscheinen soll (Standard: „time“).

--datastore_emulator_cmd=...

Der Pfad zu einem Script, das den Cloud Datastore-Emulator aufruft. Wenn Sie das Feld leer lassen, versucht dev_appserver, den Datenspeicheremulator im Google Cloud SDK zu finden (Standard: "None").

--datastore_emulator_port=...

Die Portnummer, auf der dev_appserver den Cloud Datastore-Emulator starten soll (Standardeinstellung: 0).

--datastore_path=...

Der für die Datendatei des lokalen Datenspeichers zu verwendende Pfad. Falls die Datei noch nicht vorhanden ist, wird sie vom Server erstellt.

--default_gcs_bucket_name=...

Name des standardmäßigen Cloud Storage-Buckets (Standard: Keine).

--dev_appserver_log_level {debug,info,warning,critical,error}

Die Logebene, unter der vom Entwicklungsserver generierte Loggingnachrichten nicht in der Konsole angezeigt werden (dieses Flag ist nützlicher für die Diagnose von Problemen in dev_appserver.py und nicht im Anwendungscode) (Standard: Informationen).

--enable_host_checking=yes|no

Legt fest, ob die Hostprüfung HTTP für Anwendungsmodule, API-Server und Administratorserver erzwungen wird. Die Hostprüfung schützt vor DNS-Rebinding-Angriffen, wird erst deaktiviert, nachdem die Auswirkungen auf die Sicherheit verstanden wurden (Standard: True).

--enable_console=yes|no

Aktivieren Sie die interaktive Konsole in der Administratoransicht (Standard: False).

--enable_sendmail=yes|no

Verwendet zum Senden von E-Mail-Nachrichten die Sendmail-Installation des lokalen Computers Sendmail.

--enable_task_running=yes|no

Ermöglicht dem Entwicklungsserver, Push-Aufgaben auszuführen (Standardeinstellung: yes). Wenn Sie no angeben, führt der Server keine Push-Aufgaben aus.

--env_var=...

Benutzerdefinierte Umgebungsvariable für den lokalen Laufzeitprozess; Jede Variable env_var hat das Format key=value. Sie können mehrere Umgebungsvariablen definieren. Zusätzlich zur Variable env_variables in der Datei app.yaml können mit diesem Flag weitere Umgebungsvariablen für lokale Prozesse festgelegt werden.

Beispiel:--env_var KEY_1=val1 --env_var KEY_2=val2

--grpc_api_port...

Port, den der API-Server gRPC überwacht (Standardeinstellung:0).

--help

Zeigt Hilfeinformationen an und beendet das Programm.

--host=...

Die Hostadresse für den Server; unter Umständen müssen Sie diese festlegen, um über einen anderen Computer im Netzwerk auf den Entwicklungsserver zugreifen zu können. Die Adresse 0.0.0.0 ermöglicht den Zugriff sowohl über localhost als auch über die IP oder den Hostnamen. (Standard: localhost).

--log_level=...

Die unterste Logging-Ebene, auf der Logging-Meldungen in die Konsole geschrieben werden. Meldungen der angegebenen Logging-Ebene oder höherer Ebenen werden ausgegeben. Mögliche Werte sind debug, info, warning, error und critical.

--logs_path=...

Standardmäßig werden die Logs für den lokalen Entwicklungsserver nur im Arbeitsspeicher abgelegt. Geben Sie diese Option an, wenn der lokale Entwicklungsserver die Logs in einer Datei speichern soll, sodass die Logs auch bei Neustarts des Servers verfügbar bleiben. Sie müssen den Verzeichnispfad und den Namen einer SQLite-Datenbankdatei angeben. Es wird eine SQLite-Datenbankdatei mit dem angegebenen Namen erstellt, wenn die Datei noch nicht vorhanden ist.

Beispiel: --logs_path=/home/logs/boglogs.db

--max_module_instances=...

Die maximale Anzahl von Laufzeitinstanzen, die für ein bestimmtes Modul gestartet werden können. Der Wert kann eine Ganzzahl sein, sodass alle Module auf diese Zahl von Instanzen oder eine durch Kommas getrennte Liste von module:max_instances (Standardeinstellung: „None“) beschränkt sind. Beispiel: default:5,backend:3

--mysql_host=MYSQL_HOST

Hostname eines laufenden MySQL-Servers, der für den simulierten Cloud SQL-Speicher verwendet wird (Standard: localhost).

--mysql_port=MYSQL_PORT

Portnummer eines laufenden MySQL-Servers, der für den simulierten Cloud SQL-Speicher verwendet wird (Standard: 3306).

--mysql_user=MYSQL_USER

Nutzername für den Verbindungsaufbau mit dem MySQL-Server, der in --mysql_host und --mysql_port oder --mysql_socket angegeben ist (Standard: ).

--mysql_password=MYSQL_PASSWORD

Passwort für den Verbindungsaufbau mit dem MySQL-Server, der in --mysql_host und --mysql_port oder --mysql_socket angegeben ist (Standardeinstellung: ).

--mysql_socket=MYSQL_SOCKET

Pfad zu einer Unix-Socket-Datei, die beim Herstellen einer Verbindung zu einem laufenden MySQL-Server für einen simulierten Cloud SQL-Speicher verwendet werden soll (Standard: Keine).

--port=...

Die Portnummer für den Server; Standardwert ist 8080. Wenn mehrere Server gestartet werden, z. B. für Dienste, werden ihnen aufeinanderfolgende Ports zugewiesen, z. B. 8081, 8082 usw.

--require_indexes=yes|no

Deaktiviert die automatische Erstellung von Einträgen in der index.yaml-Datei. Wenn die Anwendung eine Abfrage vornimmt, für die ihr Index in der Datei definiert sein muss, die Indexdefinition jedoch nicht gefunden wird, wird ähnlich wie bei der Ausführung unter App Engine eine Ausnahme ausgelöst. (Standard: no).

--runtime=...

Gibt die Standardlaufzeiten an, die Sie verwenden möchten. Eine Liste der unterstützten Laufzeiten finden Sie im Zeitplan für die Laufzeitunterstützung.

--running_datastore_emulator_host=...

Überschreibt die Umgebungsvariable DATASTORE_EMULATOR_HOST, was bedeutet, dass hostname:port eines ausgeführten Cloud Datastore-Emulators, mit dem dev_appserver eine Verbindung herstellen kann (Standard: Keine).

--search_indexes_path=...

Pfad zu einer Datei, die zum Speichern von Suchindexen verwendet wird (Standardwert ist eine Datei in --storage_path, falls nicht festgelegt) (Standard: Keine).

--skip_sdk_update_check=...

Überspringen Sie die Prüfung auf SDK-Updates (wenn "false", verwenden Sie .appcfg_nag, um zu entscheiden) (Standardeinstellung: False).

--show_mail_body=...

Der Inhalt von E-Mails wird protokolliert, die mit der Mail API gesendet werden (Standardeinstellung: False).

--smtp_allow_tls...

Zulassen, dass TLS verwendet wird, wenn der SMTP-Server eine TLS-Unterstützung ankündigt (wird ignoriert, wenn --smtp_host nicht festgelegt ist) (Standardeinstellung: True).

--smtp_host=...

Der Hostname des zum Senden von E-Mail-Nachrichten zu verwendenden SMTP-Servers

--smtp_port=...

Die Portnummer des zum Senden von E-Mail-Nachrichten zu verwendenden SMTP-Servers

--smtp_user=...

Der zum Senden von E-Mail-Nachrichten zusammen mit dem SMTP-Server zu verwendende Nutzername

--smtp_password=...

Das zum Senden von E-Mail-Nachrichten zusammen mit dem SMTP-Server zu verwendende Passwort

--storage_path=...

Pfad, unter dem alle lokalen Dateien wie Datastore-, Blobstore- oder Cloud Storage-Dateien und -Logs gespeichert werden, sofern dieser nicht durch --datastore_path, --blobstore_path oder --logs_path überschrieben wird.

--support_datastore_emulator=yes|no

Verwenden Sie den Cloud Datastore Emulator (Beta) für die lokale Datenspeicheremulation.

--ssl_certificate_path=...

Pfad zum SSL-Zertifikat. Geben Sie auch --ssl_certificate_key_path an, wenn Sie diese Option verwenden (Standardeinstellung: "Keine").

--ssl_certificate_key_path=...

Pfad zum entsprechenden privaten SSL-Schlüssel. Geben Sie auch --ssl_certificate_path an, wenn Sie diese Option verwenden (Standardeinstellung: "Keine").

--threadsafe_override=...

Überschreiben die Threadsafe-Konfiguration der Anwendung. Der Wert kann ein boolescher Wert sein. In diesem Fall werden alle threadsicheren Einstellungen des Moduls überschrieben oder eine durch Kommas getrennte Liste von module:threadsafe_override überschrieben. Standardeinstellung: "None".

Beispiel: default:False,backend:True

--use_mtime_file_watcher=...

Verwendet mtime-Abfragen, um Änderungen des Quellcodes zu ermitteln. Dies ist hilfreich, wenn Code von einem Remote-Computer mit einem verteilten Dateisystem geändert wird (Standardeinstellung: False).

--watcher_ignore_re=...

Regex-String zum Festlegen von Dateien, die vom Filewatcher ignoriert werden sollen. (Standardwert: Keine)

Python-laufzeitspezifische Befehlsoptionen:

--python_startup_script
Das Script, das beim Start neuer Python-Laufzeitinstanzen ausgeführt werden soll (nützlich bei Tools wie Debuggern).
--python_startup_args
Die Argumente, die für das in python_startup_script angegebene Skript verfügbar sind (Standardeinstellung: Keine).
--python27_executable_path=...
Der Pfad zur ausführbaren python27-Datei für python27-Laufzeitinstanzen (Standard: Keine).
--python_virtualenv_path
Der Pfad zum Verzeichnis, in dem eine virtuelle Python 3-Umgebung für die lokale Ausführungsumgebung des DevAppServers für Python 3-Anwendungen eingerichtet wird. Wenn der Pfad nicht vorhanden ist, wird das Verzeichnis erstellt, aber nicht am Ende der Ausführung des DevAppServers bereinigt. Das ermöglicht das Caching zwischen Aufrufen. Wenn kein temporäres Verzeichnis definiert ist, wird ein temporäres Verzeichnis verwendet und am Ende der Ausführung wieder bereinigt.
--runtime_python_path=...
Der Pfad zu Ihrer Python-Binärdatei. Geben Sie dieses Flag an, um eine Python-Anwendung auf dev_appserver auszuführen.