appengine_config.py
파일은 구성 파일이며, 여기에 라이브러리용 설치 폴더를 지정하고 google.appengine 패키지에 있는 일부 Python 모듈의 상수 및 '후크 함수' 값을 원하는 대로 제공할 수 있습니다.
고유한 값을 지정하면 애플리케이션의 요구에 따라 관련 App Engine 서비스의 기본 동작이 변경될 수 있습니다. 이 파일을 app.yaml
구성 파일과 함께 정의하고 나머지 앱 코드와 함께 배포합니다.
appengine_config.py로 Python 모듈 구성
appengine_config.py
를 사용하면 App Engine의 Python 모듈을 여러 개 구성할 수 있습니다.
서비스의 Python 모듈을 맞춤설정하려면 새 appengine_config.py
파일을 서비스의 루트 디렉터리에 만듭니다. 이 파일을 사용하려면 재정의하려는 상수나 후크 함수만 정의해야 합니다. 그런 다음 app.yaml
파일이 있는 디렉터리에서 gcloud app
deploy
를 실행하여 새 appengine_config.py
파일과 함께 앱을 다시 배포합니다. 그러면 정의한 상수와 후크 함수가 해당 App Engine 서비스에서 내부적으로 사용됩니다.
상수를 재정의하려면 상수 이름 앞에 Python 모듈 이름과 밑줄을 붙이고 값을 할당합니다. 예를 들어 KEY_PREFIX
의 값을 정의하여 appstats에서 재정의를 편집할 수 있습니다.
appstats_KEY_PREFIX = '__my_custom_prefix__'
재정의된 후크 함수의 명명 방식은 다른 Python 모듈에서도 비슷합니다. 예를 들어
namespace_manager에서 다음과 같이 appengine_config.py
의 후크 함수 default_namespace_for_request
를 재정의할 수 있습니다.
import os def namespace_manager_default_namespace_for_request(): return os.environ.get('HTTP_HOST', '')
App Engine에서 구성 가능한 Python 모듈
appengine_config.py
를 사용하여 아래에 나와 있는 Python 모듈을 구성할 수 있습니다. 규칙에 따라 후크 함수는 소문자이고 상수는 대문자입니다.
-
default_namespace_for_request()
(기본값은None
반환)
- appengine/ext/appstats/recording.py에서
class ConfigDefaults
참조 - appengine/ext/appstats/sample_appengine_config.py에서 예시 참조
BASE_PATH
(기본값'/_ah/datastore_admin'
)MAPREDUCE_PATH
(기본값'/_ah/mapreduce'
)CLEANUP_MAPREDUCE_STATE
(기본값True
)
CUSTOM_ENVIRONMENT_AUTHENTICATION
- appengine/ext/remote_api/handler.py에서
class ConfigDefaults
참조
lib_config로 고유한 Python 모듈 구성
또한 App Engine에서는 appengine_config.py
에서 정의된 상수와 후크 함수로 고유한 Python 모듈을 구성할 수 있습니다. lib_config.register()
함수를 사용하면 사용자가 재정의할 수 있는 상수와 후크의 이름을 모두 등록하고 사용자가 재정의하지 않으려는 경우 적절한 기본값을 정의할 수 있습니다. 내부적으로 lib_config.register()
는 appengine_config
를 가져오려고 시도합니다. 가져오기에 성공하면 지정한 Python 모듈의 기본값이 appengine_config.py
에서 정의된 모듈로 바뀝니다.
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})
이제 다음과 같이 사용자 상수에 액세스할 수 있습니다.
_config.CONSTANT1 _config.CONSTANT2
그리고 다음과 같이 후크 함수를 호출할 수 있습니다.
_config.hook_function1()
일부 프로그래머는 기본값을 클래스에서 그룹화하려 합니다.
class _ConfigDefaults(object): CONSTANT1 = 'foo' CONSTANT2 = 'bar' def hook_function1(): return 'baz' _config = lib_config.register('my_module', _ConfigDefaults.__dict__)
기본값을 재정의하기 위해 사용자는 appengine_config.py
에서 정의할 수 있습니다.
my_module_CONSTANT1 = 'foofoo' my_module_hook_function1 = lambda: 'bazbaz'
따라서 my_module.py
에서는 다음 사항이 적용됩니다.
_config.CONSTANT1
에서'foofoo'
으로 변경됨_config.CONSTANT2
는'bar'
로 남아 있음_config.hook_function1()
은'bazbaz'
를 반환함
lib_config.register()
반환 직후 사용자 재정의를 my_module.py
에서 사용할 수 있습니다.