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:
-
default_namespace_for_request()
(default menampilkanNone
)
- lihat
class ConfigDefaults
di appengine/ext/appstats/recording.py - lihat contoh di appengine/ext/appstats/sample_appengine_config.py
BASE_PATH
(default'/_ah/datastore_admin'
)MAPREDUCE_PATH
(default'/_ah/mapreduce'
)CLEANUP_MAPREDUCE_STATE
(defaultTrue
)
CUSTOM_ENVIRONMENT_AUTHENTICATION
- lihat
class ConfigDefaults
di appengine/ext/remote_api/handler.py
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.