Menggunakan server pengembangan lokal

Anda dapat menggunakan server pengembangan lokal untuk menyimulasikan cara menjalankan aplikasi App Engine dalam lingkungan production, serta menggunakannya untuk mengakses layanan yang dipaketkan App Engine.

Lingkungan simulasi menerapkan beberapa pembatasan sandbox, seperti fungsi sistem terbatas dan impor modul Python 2, tetapi tidak yang lainnya, seperti waktu tunggu atau kuota permintaan.

Server pengembangan lokal juga menyimulasikan layanan yang disediakan oleh library di SDK untuk App Engine, termasuk Datastore, Memcache, dan Task Queues, dengan menjalankan tugasnya secara lokal. Saat aplikasi Anda berjalan di server pengembangan, Anda masih dapat melakukan panggilan API jarak jauh ke infrastruktur produksi menggunakan endpoint HTTP Google API.

Sebelum memulai

Karena Python 2.7 telah mencapai akhir dukungan, Anda tidak dapat lagi menggunakan versi terbaru dev_appserver.py untuk menjalankan aplikasi Anda secara lokal. Untuk mendownload versi devapp_server.py yang diarsipkan, ikuti langkah-langkah berikut:

  1. Dari arsip, download folder zip yang berisi server dev_appserver.py untuk runtime yang telah mencapai akhir dukungan.

  2. Ekstrak konten direktori ke sistem file lokal Anda, seperti ke direktori /home. Anda dapat menemukan dev_appserver.py di direktori google_appengine/.

Menyiapkan server pengembangan lokal

Untuk menjalankan alat server pengembangan lokal, Anda harus menyiapkan hal-hal berikut:

  1. Verifikasi bahwa Anda telah menginstal penafsir Python 2 versi 2.7.12 atau yang lebih baru.

  2. Tetapkan variabel lingkungan DEVAPPSERVER_ROOT di shell ke jalur penafsir Python 2 Anda.

Menjalankan server pengembangan lokal

Setelah menyiapkan server pengembangan lokal dan membuat file konfigurasi app.yaml untuk aplikasi Anda, Anda dapat menggunakan perintah dev_appserver.py untuk menjalankan aplikasi secara lokal.

Untuk memulai server pengembangan lokal:

  1. Dalam direktori yang berisi file konfigurasi app.yaml Anda, jalankan perintah dev_appserver.py.

    Tentukan jalur direktori ke aplikasi Anda, misalnya:

         python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py [PATH_TO_YOUR_APP]
    

    Atau, Anda dapat menentukan file konfigurasi layanan tertentu, misalnya:

         python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py app.yaml
    

    Untuk mengubah port, sertakan opsi --port:

         python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py --port=9999 [PATH_TO_YOUR_APP]
    

    Ganti [DEVAPPSERVER_ROOT] dengan jalur ke folder tempat Anda mengekstrak versi yang diarsipkan dari devapp_server.py.

    Untuk mempelajari opsi perintah dev_appserver.py lebih lanjut, lihat Opsi server pengembangan lokal.

  2. Server pengembangan lokal sekarang berjalan dan memproses permintaan. Anda dapat membuka http://localhost:8080/ di browser web untuk melihat cara kerja aplikasi.

    Jika Anda menentukan port kustom dengan opsi --port, jangan lupa untuk membuka browser ke port tersebut.

Untuk menghentikan server lokal dari command line, tekan tombol berikut:

  • macOS atau Linux: Control+C
  • Windows: Control+Break

Menentukan ID aplikasi

Untuk mengakses ID Aplikasi Anda di server lokal, misalnya untuk melakukan spoofing alamat email, gunakan fungsi get_application_id() . Untuk mendapatkan nama host aplikasi yang sedang berjalan, gunakan fungsi get_default_version_hostname() .

Mendeteksi lingkungan runtime aplikasi

Untuk menentukan apakah kode Anda berjalan di produksi atau di server pengembangan lokal, Anda dapat memeriksa nilai variabel lingkungan SERVER_SOFTWARE:

if os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine/'):
  # Production
else:
  # Local development server

Menggunakan Datastore lokal

Server pengembangan lokal menyimulasikan datastore App Engine menggunakan file lokal yang tetap ada di antara pemanggilan server lokal.

Untuk informasi selengkapnya tentang indeks dan index.yaml, lihat halaman Indeks Datastore dan Konfigurasi Indeks Datastore.

Menjelajahi Datastore lokal

Jika aplikasi Anda telah menulis data ke Datastore lokal menggunakan server pengembangan lokal, Anda dapat mencarinya di konsol pengembangan lokal.

Untuk menjelajahi Datastore lokal:

  1. Mulai server pengembangan.

  2. Akses Viewer Datastore di konsol pengembangan lokal. (URL-nya adalah http://localhost:8000/datastore.)

  3. Lihat konten Datastore lokal Anda.

Menentukan kebijakan alokasi ID

Untuk App Engine produksi, Anda dapat menetapkan Datastore untuk membuat ID entity secara otomatis.

Meskipun kebijakan penetapan ID otomatis untuk server produksi benar-benar berbeda dengan yang digunakan oleh server pengembangan, Anda juga dapat menetapkan kebijakan alokasi ID otomatis untuk server lokal.

Untuk menentukan kebijakan penetapan ID otomatis, gunakan opsi --auto_id_policy:

python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py --auto_id_policy=sequential

Ganti:

  • DEVAPPSERVER_ROOT dengan jalur ke folder tempat Anda mengekstrak versi yang diarsipkan dari devapp_server.py.

  • --auto_id_policy dengan salah satu dari berikut ini:

    • scattered saat ID (default) ditetapkan dari urutan yang tidak berulang dari bilangan bulat yang didistribusikan secara merata yang kurang lebih.
    • sequential jika ID ditetapkan dari urutan bilangan bulat yang berurutan.

Mengosongkan Datastore lokal

Guna mengosongkan datastore lokal untuk aplikasi, panggil server pengembangan lokal sebagai berikut:

python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py --clear_datastore=yes app.yaml

Ganti DEVAPPSERVER_ROOT dengan jalur ke folder tempat Anda mengekstrak versi yang diarsipkan dari devapp_server.py.

Mengubah lokasi Datastore lokal

Untuk mengubah lokasi yang digunakan untuk file datastore, gunakan opsi --datastore_path:

python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py --datastore_path=/tmp/myapp_datastore app.yaml

Ganti DEVAPPSERVER_ROOT dengan jalur ke folder tempat Anda mengekstrak versi yang diarsipkan dari devapp_server.py.

Menggunakan layanan Pengguna

App Engine menyediakan Layanan Pengguna untuk menyederhanakan autentikasi dan otorisasi untuk aplikasi Anda. Server pengembangan lokal menyimulasikan perilaku Akun Google dengan halaman login dan logout-nya sendiri. Saat berjalan di bawah server pengembangan lokal, fungsi users.create_login_url dan users.create_logout_url menampilkan URL untuk /_ah/login dan /_ah/logout di server lokal.

Menggunakan Email

Server pengembangan lokal dapat mengirim email untuk panggilan ke layanan email App Engine menggunakan server SMTP atau penginstalan lokal Sendmail.

Menggunakan SMTP

Untuk mengaktifkan dukungan email dengan server SMTP, panggil dev_appserver.py seperti berikut:

   python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py --smtp_host=smtp.example.com --smtp_port=25 \
    --smtp_user=ajohnson --smtp_password=k1tt3ns [PATH_TO_YOUR_APP]

Ganti:

  • [DEVAPPSERVER_ROOT] dengan jalur ke folder tempat Anda mengekstrak versi yang diarsipkan dari devapp_server.py.
  • Opsi --smtp_host, --smtp_port, --smtp_user dan --smtp_password dengan nilai konfigurasi Anda sendiri.

Menggunakan Sendmail

Untuk mengaktifkan dukungan email dengan Sendmail, panggil dev_appserver.py sebagai berikut:

   python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py --enable_sendmail=yes [PATH_TO_YOUR_APP]

Ganti [DEVAPPSERVER_ROOT] dengan jalur ke folder tempat Anda mengekstrak versi yang diarsipkan dari devapp_server.py.

Server lokal akan menggunakan perintah sendmail untuk mengirim pesan email dengan konfigurasi default penginstalan Anda.

Menggunakan URL-fetch

Jika aplikasi Anda menggunakan URL-fetch API untuk membuat permintaan HTTP, server pengembangan lokal akan membuat permintaan tersebut langsung dari komputer Anda. Perilaku URL-fetch di server lokal dapat berbeda dengan App Engine produksi jika Anda menggunakan server proxy untuk mengakses situs.

Menggunakan Konsol Interaktif

Konsol Interaktif memungkinkan developer memasukkan kode Python arbitrer ke dalam formulir web dan mengeksekusinya di dalam lingkungan aplikasi mereka; memberikan akses yang sama ke lingkungan dan layanan aplikasi seperti file .py di dalam aplikasi itu sendiri.

Untuk menggunakan Konsol Interaktif:

  1. Mulai server pengembangan.

  2. Akses Konsol interaktif di konsol pengembangan lokal. (URL-nya adalah http://localhost:8000/console.)

  3. Masukkan kode Python apa pun yang ingin Anda jalankan di area teks, lalu kirimkan formulir untuk mengeksekusinya. Misalnya, kode berikut akan menambahkan entity Datastore bernama Greeting dengan konten teks Hello:

      from google.appengine.ext import ndb
      class Greeting(ndb.Model):
        content = ndb.TextProperty()
    
      e = Greeting(content="Hello")
      e.put()
    

Men-debug dengan debugger Python

Untuk menggunakan debugger Python (pdb):

  1. Tambahkan baris berikut ke kode Anda:

    import pdb; pdb.set_trace();
    

    dev_appserver akan rusak pada tahap ini dan dimasukkan ke dalam REPL pdb (read–eval–print loop), sehingga Anda dapat men-debug kode dari command line.

  2. Jika aplikasi Anda membuat beberapa permintaan simultan yang memanggil pdb.set_trace(), beberapa sesi proses debug akan dimulai secara serentak, yang masing-masing mengirimkan output ke STDOUT. Untuk menghindari hal ini, serialisasi permintaan Anda dengan menonaktifkan dukungan multi-threading dan multi-pemrosesan dev_appserver, seperti berikut:

    1. Nonaktifkan multi-threading untuk:

      • Semua layanan yang menggunakan flag --threadsafe_override=false.
      • Satu layanan yang menggunakan flag --threadsafe_override=<SERVICENAME>:false.
      • Beberapa layanan yang menggunakan flag --threadsafe_override=<SERVICE1NAME>:false,<SERVICE2NAME>:false.
    2. Nonaktifkan multipemrosesan untuk:

      • Semua layanan yang menggunakan flag --max_module_instances=1.
      • Satu layanan yang menggunakan flag --max_module_instances=<SERVICENAME>:1.
      • Beberapa layanan yang menggunakan flag --max_module_instances=<SERVICE1NAME>:1,<SERVICE2NAME>:1.