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_pathan, 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.orglässthost.example.orgzu, aber nichtsub.host.example.orgoderexample.org. Hosts, die mit**.beginnen, ermöglichen Subdomains mit beliebiger Tiefe. Beispiel:**.example.comerlaubthost.example.comundsub.host.example.com, aber nichtexample.com. (Standardeinstellung: []) --allow_skipped_files=...- Machen Sie die in
app.yamlskip_filesoderstaticangegebenen 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
Nonesein, wenn keine lokale Anwendungsidentität vorhanden ist (Standard: None). --appidentity_private_key_path=...- Pfad zur privaten Schlüsseldatei, die dem Dienstkonto zugeordnet ist (
.pem-Format). Muss festgelegt werden, wennappidentity_email_addressfestgelegt 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
sequentialoderscattered(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}(ohne Anführungszeichen) in den String ein, 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 werden soll, wenn entschieden wird, ob ein Datenspeicherschreibvorgang in globalen Abfragen angezeigt werden 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.pyund nicht im Anwendungscode) (Standard: Informationen).--enable_host_checking=yes|noLegt fest, ob die Hostprüfung
HTTPfü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|noAktivieren Sie die interaktive Konsole in der Administratoransicht (Standard: False).
--enable_sendmail=yes|noVerwendet zum Senden von E-Mail-Nachrichten die Sendmail-Installation des lokalen Computers
Sendmail.--enable_task_running=yes|noErmöglicht dem Entwicklungsserver, Push-Aufgaben auszuführen (Standardeinstellung:
yes). Wenn Sienoangeben, führt der Server keine Push-Aufgaben aus.--env_var=...Benutzerdefinierte Umgebungsvariable für den lokalen Laufzeitprozess; Jede Variable
env_varhat das Formatkey=value. Sie können mehrere Umgebungsvariablen definieren. Zusätzlich zur Variableenv_variablesin der Dateiapp.yamlkö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).--helpZeigt 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.0ermö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,errorundcritical.--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_HOSTHostname eines laufenden MySQL-Servers, der für den simulierten Cloud SQL-Speicher verwendet wird (Standard: localhost).
--mysql_port=MYSQL_PORTPortnummer eines laufenden MySQL-Servers, der für den simulierten Cloud SQL-Speicher verwendet wird (Standard: 3306).
--mysql_user=MYSQL_USERNutzername für den Verbindungsaufbau mit dem MySQL-Server, der in
--mysql_hostund--mysql_portoder--mysql_socketangegeben ist (Standard: ).--mysql_password=MYSQL_PASSWORDPasswort für den Verbindungsaufbau mit dem MySQL-Server, der in
--mysql_hostund--mysql_portoder--mysql_socketangegeben ist (Standardeinstellung: ).--mysql_socket=MYSQL_SOCKETPfad 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,8082usw.--require_indexes=yes|noDeaktiviert 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 den Laufzeitsupport.
--running_datastore_emulator_host=...Überschreibt die Umgebungsvariable DATASTORE_EMULATOR_HOST, was bedeutet, dass
hostname:porteines ausgeführten Cloud Datastore-Emulators, mit demdev_appservereine 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_pathoder--logs_pathüberschrieben wird.--support_datastore_emulator=yes|noVerwenden Sie den Cloud Datastore Emulator (Beta) für die lokale Datenspeicheremulation.
--ssl_certificate_path=...Pfad zum SSL-Zertifikat. Geben Sie auch
--ssl_certificate_key_pathan, wenn Sie diese Option verwenden (Standardeinstellung: "Keine").--ssl_certificate_key_path=...Pfad zum entsprechenden privaten SSL-Schlüssel. Geben Sie auch
--ssl_certificate_pathan, 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_scriptangegebene 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, das zum Einrichten einer virtuellen Python 3-Umgebung für die lokale devappserver-Ausführungsumgebung für Python 3-Anwendungen verwendet wird. Wenn der Pfad nicht vorhanden ist, wird das Verzeichnis erstellt, aber am Ende der devappserver-Ausführung nicht bereinigt. So ist das Caching zwischen Aufrufen möglich. Wenn nicht definiert, wird ein temporäres Verzeichnis verwendet, das am Ende der Ausführung bereinigt wird.
--runtime_python_path=...- Der Pfad zu Ihrer Python-Binärdatei. Geben Sie dieses Flag an, um eine Python-Anwendung auf
dev_appserverauszuführen.