Il file appengine_config.py
è un file di configurazione che fornisce le
specificare
cartella di installazione per le librerie e fornisci i tuoi valori per le costanti
"funzioni hook" per alcuni dei moduli Python nei pacchetti google.appengine.
Specificando i tuoi valori puoi modificare il comportamento predefinito dei
ai servizi App Engine correlati in base alle esigenze dell'applicazione. Devi definire questo file insieme
Configurazione di app.yaml
ed eseguine il deployment con il resto del codice dell'app.
Configurazione dei moduli Python con appengine_config.py
Diversi moduli Python in App Engine sono configurabili utilizzando appengine_config.py
.
Per personalizzare i moduli Python dei tuoi servizi,
crei un nuovo file appengine_config.py
nella directory radice
di quel servizio. Per utilizzare questo file, devi definire solo queste costanti o
le funzioni hook che vuoi sostituire. Quindi esegui gcloud app
deploy
dalla directory in cui si trova il file app.yaml
per eseguire nuovamente il deployment dell'app insieme al nuovo file appengine_config.py
. Le costanti e le funzioni hook che
da te definiti verranno usati internamente da quei servizi App Engine.
Per eseguire l'override di una costante, aggiungi il modulo Python al nome della costante
e un trattino basso, quindi assegna un valore. Ad esempio, per modificare le sostituzioni in
appstats, puoi
definisci il valore di KEY_PREFIX
appstats_KEY_PREFIX = '__my_custom_prefix__'
La denominazione delle funzioni hook sostituite è simile in altri moduli Python. Per
esempio, in
workspace_manager, puoi eseguire l'override della funzione hook
default_namespace_for_request
a 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 hook hanno il minuscolo
e le costanti sono in maiuscolo:
-
default_namespace_for_request()
(resi predefiniti perNone
)
- 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'
predefinito)MAPREDUCE_PATH
(valore predefinito:'/_ah/mapreduce'
)CLEANUP_MAPREDUCE_STATE
(valore predefinito:True
)
CUSTOM_ENVIRONMENT_AUTHENTICATION
- vedi
class ConfigDefaults
in appengine/ext/remote_api/handler.py
Configura i tuoi moduli Python con lib_config
App Engine ti consente inoltre di configurare i tuoi moduli Python con costanti
e hook definite in appengine_config.py
. La
funzione lib_config.register()
ti consente sia di registrare i
nomi delle costanti e degli hook sostituibili dall'utente, sia di definire valori predefiniti sensati nel caso in cui gli utenti non vogliano sostituirli. Internamente,
lib_config.register()
tentativi di importazione
appengine_config
. Se l'operazione ha esito positivo, sostituisce i valori predefiniti del
moduli Python specificati con quelli definiti
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 di hook come segue:
_config.hook_function1()
Alcuni programmatori amano raggruppare 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 le impostazioni predefinite, un utente può definire
appengine_config.py
:
my_module_CONSTANT1 = 'foofoo' my_module_hook_function1 = lambda: 'bazbaz'
Di conseguenza, in my_module.py
sarà vero quanto segue:
_config.CONSTANT1
ora è'foofoo'
_config.CONSTANT2
rimane'bar'
_config.hook_function1()
restituisce'bazbaz'
Gli override utente sono immediatamente disponibili per my_module.py
dopo il ritorno di lib_config.register()
.