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 Positionsargumentyaml_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ässthost.example.org
zu, aber nichtsub.host.example.org
oderexample.org
. Hosts, die mit**.
beginnen, ermöglichen Subdomains mit beliebiger Tiefe. Beispiel:**.example.com
erlaubthost.example.com
undsub.host.example.com
, aber nichtexample.com
. (Standardeinstellung: []) --allow_skipped_files=...
- Machen Sie die in
app.yaml
skip_files
oderstatic
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, wennappidentity_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
oderscattered
(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 Sieno
angeben, führt der Server keine Push-Aufgaben aus.--env_var=...
Benutzerdefinierte Umgebungsvariable für den lokalen Laufzeitprozess; Jede Variable
env_var
hat das Formatkey=value
. Sie können mehrere Umgebungsvariablen definieren. Zusätzlich zur Variableenv_variables
in der Dateiapp.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
undcritical
.--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 demdev_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.