Konfigurasi Modul Python 2

File appengine_config.py adalah file konfigurasi yang memberi Anda kemampuan untuk menentukan folder penginstalan untuk library dan menyediakan nilai Anda sendiri untuk konstanta dan "fungsi hook" untuk beberapa modul Python dalam paket google.appengine. Menentukan nilai Anda sendiri dapat mengubah perilaku default layanan App Engine terkait berdasarkan kebutuhan aplikasi. Anda menentukan file ini bersama file konfigurasi app.yaml dan men-deploy-nya bersama kode aplikasi lainnya.

Mengonfigurasi modul Python dengan appengine_config.py

Beberapa modul Python di App Engine dapat dikonfigurasi menggunakan appengine_config.py.

Untuk menyesuaikan modul Python layanan, buat file appengine_config.py baru di direktori root layanan tersebut. Untuk menggunakan file ini, Anda hanya perlu menentukan konstanta atau fungsi hook yang ingin diganti. Kemudian, jalankan gcloud app deploy dari direktori tempat file app.yaml berada untuk men-deploy ulang aplikasi Anda bersama dengan file appengine_config.py yang baru. Konstanta dan fungsi hook yang Anda tentukan kemudian akan digunakan oleh layanan App Engine tersebut secara internal.

Untuk mengganti konstanta, awali nama konstanta dengan nama modul Python dan garis bawah, lalu tetapkan nilai. Misalnya, untuk mengedit penggantian di appstats, Anda dapat menentukan nilai KEY_PREFIX

appstats_KEY_PREFIX = '__my_custom_prefix__'

Penamaan fungsi hook yang diganti serupa di modul Python lainnya. Misalnya, dalam namespace_manager, Anda dapat mengganti fungsi hook default_namespace_for_request di appengine_config.py seperti berikut:

import os
def namespace_manager_default_namespace_for_request():
    return os.environ.get('HTTP_HOST', '')

Modul Python yang dapat dikonfigurasi di App Engine

Modul Python yang tercantum di bawah dapat dikonfigurasi menggunakan appengine_config.py. Berdasarkan konvensi, fungsi hook menggunakan huruf kecil dan konstanta menggunakan huruf besar:

namespace_manager
  • default_namespace_for_request() (default menampilkan None)

appstats

datastore_admin

  • BASE_PATH (default '/_ah/datastore_admin')
  • MAPREDUCE_PATH (default '/_ah/mapreduce')
  • CLEANUP_MAPREDUCE_STATE (default True)

remoteapi

Mengonfigurasi modul Python Anda sendiri dengan lib_config

App Engine juga memungkinkan Anda mengonfigurasi modul Python Anda sendiri dengan konstanta dan fungsi hook yang ditentukan di appengine_config.py. Dengan fungsi lib_config.register(), Anda dapat mendaftarkan nama konstanta dan hook yang dapat diganti pengguna, serta menentukan default yang logis jika pengguna tidak ingin menggantinya. Secara internal, lib_config.register() mencoba mengimpor appengine_config. Jika berhasil, kode ini akan mengganti default modul Python yang ditentukan dengan yang ditentukan di appengine_config.py.

Contoh penggunaan di my_module.py:

from google.appengine.api import lib_config

def _hook_function1_default():
   return 'baz'

_config = lib_config.register('my_module', {'CONSTANT1': 'foo',
                                            'CONSTANT2': 'bar',
                                            'hook_function1': _hook_function1_default})

Sekarang Anda dapat mengakses konstanta pengguna sebagai:

_config.CONSTANT1
_config.CONSTANT2

dan memanggil fungsi hook-nya sebagai:

_config.hook_function1()

Beberapa programmer suka mengelompokkan default mereka ke dalam class:

class _ConfigDefaults(object):
  CONSTANT1 = 'foo'
  CONSTANT2 = 'bar'
  def hook_function1():
      return 'baz'

_config = lib_config.register('my_module',  _ConfigDefaults.__dict__)

Untuk mengganti default Anda, pengguna dapat menentukan di appengine_config.py:

my_module_CONSTANT1 = 'foofoo'
my_module_hook_function1 = lambda: 'bazbaz'

Oleh karena itu, dalam my_module.py, hal berikut akan berlaku:

  • _config.CONSTANT1 sekarang menjadi 'foofoo'
  • _config.CONSTANT2 tetap menjadi 'bar'
  • _config.hook_function1() menampilkan 'bazbaz'

Penggantian pengguna tersedia untuk my_module.py segera setelah lib_config.register() ditampilkan.