Server pengembangan lokal (dev_appserver.py) adalah bagian dari komponen App Engine
gcloud CLI. Topik ini memberikan informasi
lanjutan tentang penggunaan dev_appserver.py.
Sebaiknya gunakan alat Python standar, seperti
virtualenv untuk membuat lingkungan yang terisolasi, dan pytest
untuk menjalankan pengujian unit dan pengujian integrasi, bukan bergantung pada
dev_appserver, server pengembangan lokal yang disediakan
dengan Google Cloud SDK.
Lihat Menggunakan server pengembangan lokal untuk mengetahui informasi selengkapnya tentang pengujian lokal.
Menyiapkan alat server pengembangan lokal
Contoh perintah dev_appserver.py mungkin terlihat seperti berikut:
python3 CLOUD_SDK_ROOT/bin/dev_appserver.py OPTION yaml_path FILES
Ganti kode berikut:
- CLOUD_SDK_ROOT dengan jalur ke direktori root tempat Anda menginstal Google Cloud CLI. Direktori default-nya adalah
./google-cloud-sdk/. - OPTION dengan flag yang didukung oleh server pengembangan lokal.
- FILES menentukan satu atau beberapa file
app.yaml, satu file per layanan, untuk argumen posisiyaml_path.
Untuk daftar lengkap opsi, jalankan perintah berikut:
python3 CLOUD_SDK_ROOT/bin/dev_appserver.py -h
Opsi umum
Opsi yang paling umum adalah sebagai berikut:
--admin_host=ADMIN_HOST- Nama host yang harus diikat oleh konsol admin server pengembangan lokal (default: localhost).
--admin_port=ADMIN_PORT- Port yang harus diikat dengan konsol admin server pengembangan lokal (default: 8000).
--addn_host=ADDN_HOST- Dengan argumen ini, Anda dapat mencantumkan nilai header Host HTTP tambahan ke daftar yang disetujui, sehingga
server dapat diakses di belakang proxy, tanpa harus
menonaktifkan pemeriksaan host (lihat
--enable_host_checking). Tambahan host yang dimulai dengan*.mengizinkan semua subdomain. Misalnya,*.example.orgmengizinkanhost.example.org, tetapi tidak mengizinkansub.host.example.orgatauexample.org. Host yang dimulai dengan**.mengizinkan subdomain dengan kedalaman berapa pun. Misalnya,**.example.commengizinkanhost.example.comdansub.host.example.com, tetapi tidakexample.com. (default: []) --allow_skipped_files=...- Buat file yang ditentukan dalam
app.yamlskip_filesataustatichandle yang dapat dibaca aplikasi (default: False). -A APP_ID, --application=...- Menetapkan aplikasi, menggantikan nilai aplikasi
dari file
app.yaml(default: Tidak Ada). --appidentity_email_address=...- Alamat email yang terkait dengan akun layanan yang memiliki kunci yang dapat didownload.
Dapat berupa
Noneuntuk tidak ada identitas aplikasi lokal (default: Tidak Ada). --appidentity_private_key_path=...- Jalur ke file kunci pribadi yang terkait dengan akun layanan (format
.pem). Harus ditetapkan jikaappidentity_email_addressditetapkan (default: None). --api_host=API_HOST- Nama host yang harus diikat server API (default: localhost).
--api_port=API_PORT- Port yang harus diikat server untuk panggilan API (default: 0).
--auth_domain=...- Nama domain otorisasi yang akan digunakan (default:
gmail.com). --auto_id_policy=...- Tidak digunakan lagi. Cara datastore lokal menetapkan ID otomatis. Opsinya adalah
sequentialatauscattered(default:scattered). --automatic_restart=...- Mulai ulang instance secara otomatis saat file yang relevan dengan modulnya diubah (default: Benar).
--blobstore_path=...- Jalur ke direktori yang digunakan untuk menyimpan konten blob
(secara default ke subdirektori
--storage_pathjika tidak ditetapkan) (default: None). --clear_datastore=yes|no- Menghapus data datastore dan file histori sebelum memulai server web (default:
no). --clear_search_indexes...- Hapus indeks penelusuran (default: False).
--custom_entrypoint=...Tentukan titik entri untuk modul runtime kustom. Ini diperlukan jika modul tersebut ada. Sertakan
{port}dalam string (tanpa tanda kutip) untuk meneruskan nomor port sebagai argumen (default: ). Sebagai contoh:--custom_entrypoint="gunicorn -b localhost:{port} mymodule:application"--datastore_consistency_policy {consistent,random,time}Kebijakan yang akan diterapkan saat memutuskan apakah penulisan datastore harus muncul dalam kueri global (default: time).
--datastore_emulator_cmd=...Jalur ke skrip yang memanggil emulator cloud datastore. Jika dibiarkan kosong,
dev_appserverakan mencoba menemukan emulator datastore di Google Cloud SDK (default: Tidak Ada).--datastore_emulator_port=...Nomor port yang harus digunakan dev_appserver untuk meluncurkan emulator Cloud Datastore (default: 0).
--datastore_path=...Jalur yang akan digunakan untuk file data datastore lokal. Server membuat file ini jika file tersebut tidak ada.
--default_gcs_bucket_name=...Nama bucket Cloud Storage default (default: None).
--dev_appserver_log_level {debug,info,warning,critical,error}Level log di bawah pesan logging yang dihasilkan oleh server pengembangan tidak akan ditampilkan di konsol (flag ini lebih berguna untuk mendiagnosis masalah di
dev_appserver.pydaripada di kode aplikasi) (default: info).--enable_host_checking=yes|noMenentukan apakah akan menerapkan pemeriksaan Host
HTTPuntuk modul aplikasi, server API, dan server admin. Pemeriksaan host memberikan perlindungan dari serangan pengikatan ulang (rebinding) DNS, dan hanya menonaktifkan setelah memahami implikasi keamanan (default: True).--enable_console=yes|noMengaktifkan konsol interaktif di tampilan admin (default: False).
--enable_sendmail=yes|noMenggunakan penginstalan
Sendmaildi komputer lokal untuk mengirim pesan email.--enable_task_running=yes|noMemungkinkan server pengembangan menjalankan tugas push (default:
yes). Jika Anda menentukanno, server tidak akan menjalankan tugas push.--env_var=...Variabel lingkungan buatan pengguna untuk proses runtime lokal. Setiap
env_vardalam formatkey=value, dan Anda dapat menentukan beberapa variabel lingkungan. Selainenv_variablesdiapp.yaml, flag ini memungkinkan penetapan variabel lingkungan tambahan untuk proses lokal.Contoh:
--env_var KEY_1=val1 --env_var KEY_2=val2--grpc_api_port...Port tempat server API
gRPCmemproses (default:0).--helpMencetak pesan yang membantu, lalu keluar.
--host=...Alamat host yang akan digunakan untuk server. Anda mungkin perlu mengaturnya agar dapat mengakses server pengembangan dari komputer lain di jaringan. Alamat
0.0.0.0memungkinkan akses localhost dan akses IP atau nama host (default:localhost).--log_level=...Level logging terendah yang digunakan untuk menulis pesan log ke konsol; pesan dengan level logging yang ditentukan atau yang lebih tinggi akan menjadi outputnya. Nilai yang mungkin adalah
debug,info,warning,error, dancritical.--logs_path=...Secara default, log untuk server pengembangan lokal hanya disimpan di memori. Tentukan opsi ini saat Anda menjalankan server pengembangan lokal untuk menyimpan log ke dalam file, yang akan membuat log tersedia setiap kali server dimulai ulang. Anda harus menentukan jalur dan nama direktori ke file database SQLite. File database SQLite dibuat dengan nama yang ditentukan jika file tersebut belum ada.
Contoh:
--logs_path=/home/logs/boglogs.db--max_module_instances=...Jumlah maksimum instance runtime yang dapat dimulai untuk modul tertentu. Nilainya dapat berupa bilangan bulat, dalam hal ini semua modul dibatasi hanya sejumlah instance atau daftar
module:max_instancesyang dipisahkan koma (default: None). Contoh:default:5,backend:3--mysql_host=MYSQL_HOSTNama host server MySQL yang sedang berjalan dan digunakan untuk penyimpanan Cloud SQL yang disimulasikan (default: localhost).
--mysql_port=MYSQL_PORTNomor port server MySQL yang sedang berjalan dan digunakan untuk penyimpanan Cloud SQL yang disimulasikan (default: 3306).
--mysql_user=MYSQL_USERNama pengguna yang akan digunakan saat terhubung ke server MySQL yang ditentukan dalam
--mysql_hostdan--mysql_portatau--mysql_socket(default: ).--mysql_password=MYSQL_PASSWORDSandi yang akan digunakan saat terhubung ke server MySQL yang ditentukan dalam
--mysql_hostdan--mysql_portatau--mysql_socket(default: ).--mysql_socket=MYSQL_SOCKETJalur ke file soket Unix yang akan digunakan saat terhubung ke server MySQL yang sedang berjalan dan digunakan untuk penyimpanan Cloud SQL yang disimulasikan (default: None).
--port=...Nomor port yang akan digunakan untuk server. Default-nya adalah
8080. Jika beberapa server diluncurkan seperti untuk layanan, server tersebut akan diberi port berikutnya, seperti8081,8082.--require_indexes=yes|noMenonaktifkan pembuatan entri otomatis di file
index.yaml. Sebagai gantinya, saat aplikasi membuat kueri yang mengharuskan indeksnya ditentukan dalam file dan definisi indeks tidak ditemukan, pengecualian akan dimunculkan, mirip dengan yang akan terjadi saat berjalan di App Engine (default:no).--runtime=...Tentukan runtime default yang ingin Anda gunakan. Untuk mengetahui daftar runtime yang didukung, lihat Jadwal dukungan runtime.
--running_datastore_emulator_host=...Mengganti variabel lingkungan DATASTORE_EMULATOR_HOST, yang berarti
hostname:portemulator Cloud Datastore yang sedang berjalan yang dapat dihubungkan olehdev_appserver(default: None).--search_indexes_path=...Jalur ke file yang digunakan untuk menyimpan indeks penelusuran (secara default adalah file di
--storage_pathjika tidak disetel) (default:None).--skip_sdk_update_check=...Lewati pemeriksaan update SDK (jika salah, gunakan
.appcfg_naguntuk menentukan) (default: False).--show_mail_body=...Mencatat isi email yang dikirim menggunakan Mail API (default: False).
--smtp_allow_tls...Mengizinkan TLS digunakan saat server SMTP mengumumkan dukungan TLS (diabaikan jika --smtp_host tidak disetel) (default: True).
--smtp_host=...Nama host server SMTP yang akan digunakan untuk mengirim pesan email.
--smtp_port=...Nomor port server SMTP yang akan digunakan untuk mengirim pesan email.
--smtp_user=...Nama pengguna yang akan digunakan dengan server SMTP untuk mengirim pesan email.
--smtp_password=...Sandi yang akan digunakan dengan server SMTP untuk mengirim pesan email.
--storage_path=...Jalur penyimpanan semua file lokal, seperti Datastore, Blobstore, file Cloud Storage, dan log, kecuali jika diganti oleh
--datastore_path,--blobstore_path, atau--logs_path.--support_datastore_emulator=yes|noGunakan Emulator Cloud Datastore (beta) untuk emulasi datastore lokal.
--ssl_certificate_path=...Jalur ke sertifikat SSL. Juga harus memberikan
--ssl_certificate_key_pathjika menggunakan opsi ini (default: None).--ssl_certificate_key_path=...Jalur ke kunci pribadi SSL yang sesuai. Juga harus memberikan
--ssl_certificate_pathjika menggunakan opsi ini (default: None).--threadsafe_override=...Mengganti konfigurasi thread-safe aplikasi. Nilainya dapat berupa boolean, dalam hal ini setelan thread-safe semua modul akan diganti atau daftar
module:threadsafe_overrideyang dipisahkan koma (default: None).Contoh:
default:False,backend:True--use_mtime_file_watcher=...Menggunakan polling mtime untuk mendeteksi perubahan kode sumber - berguna jika mengubah kode dari mesin jarak jauh menggunakan sistem file terdistribusi (default: False).
--watcher_ignore_re=...String regex untuk menentukan file yang akan diabaikan oleh filewatcher. (default: None)
Opsi perintah khusus runtime Python:
--python_startup_script- Skrip yang akan dijalankan saat memulai instance runtime Python baru (berguna untuk alat seperti debugger) (default: None).
--python_startup_args- Argumen yang disediakan untuk skrip yang ditentukan di
python_startup_script(default: None). --python27_executable_path=...- Jalur ke python27 yang dapat dieksekusi untuk instance runtime python27 (default: None).
--python_virtualenv_path- Jalur ke direktori yang digunakan untuk menyiapkan lingkungan virtual Python 3 bagi lingkungan eksekusi devappserver lokal untuk aplikasi Python 3. Jika jalur tidak ada, direktori akan dibuat, tetapi tidak akan dibersihkan di akhir eksekusi devappserver, sehingga memungkinkan penyimpanan dalam cache di antara pemanggilan. Jika tidak ditentukan, direktori sementara akan digunakan dan dibersihkan di akhir eksekusi.
--runtime_python_path=...- Jalur ke biner Python Anda. Untuk menjalankan aplikasi Python di
dev_appserver, tentukan flag ini.