Il file appengine_config.py
è un file di configurazione che consente di specificare la
cartella di installazione per le librerie e di fornire valori personalizzati per le costanti e
le funzioni "hook" per alcuni moduli Python nei pacchetti google.appengine.
Specificando valori personalizzati puoi modificare il comportamento predefinito dei servizi App Engine correlati in base alle esigenze dell'applicazione. Devi definire questo file insieme al file di configurazione app.yaml
ed eseguirne il deployment con il resto del codice dell'app.
Configurazione di moduli Python con appengine_config.py
Diversi moduli Python in App Engine possono essere configurati utilizzando appengine_config.py
.
Per personalizzare i moduli Python dei servizi, devi creare un nuovo file appengine_config.py
nella directory principale di quel servizio. Per utilizzare questo file, devi definire solo le costanti o le funzioni di hook che vuoi sostituire. Esegui quindi gcloud app
deploy
dalla directory in cui si trova
il file app.yaml
per rieseguire il deployment dell'app insieme al nuovo
file appengine_config.py
. Le costanti e le funzioni di hook definite
verranno quindi utilizzate internamente da tali servizi di App Engine.
Per sostituire una costante, anteponi al nome della costante il nome del modulo Python
e il trattino basso, quindi assegna un valore. Ad esempio, per modificare le sostituzioni in appstats, puoi definire il valore di KEY_PREFIX
.
appstats_KEY_PREFIX = '__my_custom_prefix__'
La denominazione delle funzioni di hook sostituite è simile in altri moduli Python. Ad
esempio, in
space_manager, puoi eseguire l'override della funzione hook
default_namespace_for_request
in appengine_config.py
come segue:
import os def namespace_manager_default_namespace_for_request(): return os.environ.get('HTTP_HOST', '')
Moduli Python configurabili in App Engine
I moduli Python elencati di seguito sono configurabili utilizzando
appengine_config.py
. Per convenzione, le funzioni di hook sono in minuscolo e le costanti sono maiuscole:
- (nome spazio gestore)
-
default_namespace_for_request()
(restituzione predefinita:None
)
- vedi
class ConfigDefaults
in appengine/ext/appstats/recording.py - Vedi l'esempio in appengine/ext/appstats/sample_appengine_config.py
BASE_PATH
('/_ah/datastore_admin'
predefinita)MAPREDUCE_PATH
('/_ah/mapreduce'
predefinita)CLEANUP_MAPREDUCE_STATE
(True
predefinita)
CUSTOM_ENVIRONMENT_AUTHENTICATION
- vedi
class ConfigDefaults
in appengine/ext/remote_api/handler.py
Configurazione dei tuoi moduli Python con lib_config
App Engine consente inoltre di configurare i propri moduli Python con costanti e funzioni di hook definite in appengine_config.py
. La
funzione lib_config.register()
consente di registrare i
nomi delle costanti e degli hook sostituibili dall'utente e di
definire impostazioni predefinite sensibili nel caso in cui gli utenti non vogliano eseguirne l'override. Internamente,
lib_config.register()
tenta di importare
appengine_config
. In caso di esito positivo, sostituisce i valori predefiniti dei
moduli Python specificati con quelli definiti in
appengine_config.py
.
Esempio di utilizzo in 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})
Ora puoi accedere alle costanti di un utente come:
_config.CONSTANT1 _config.CONSTANT2
e chiamare la funzione hook come:
_config.hook_function1()
Alcuni programmatori raggruppano le impostazioni predefinite in un corso:
class _ConfigDefaults(object): CONSTANT1 = 'foo' CONSTANT2 = 'bar' def hook_function1(): return 'baz' _config = lib_config.register('my_module', _ConfigDefaults.__dict__)
Per sostituire i valori predefiniti, un utente può definire in appengine_config.py
:
my_module_CONSTANT1 = 'foofoo' my_module_hook_function1 = lambda: 'bazbaz'
Di conseguenza, in my_module.py
, si verificherà quanto segue:
_config.CONSTANT1
ora è'foofoo'
_config.CONSTANT2
rimane'bar'
_config.hook_function1()
restituisce'bazbaz'
Le sostituzioni dell'utente sono disponibili per my_module.py
subito dopo la restituzione di lib_config.register()
.