Python 2 モジュールの構成

Google App Engine では、google.appengine の Python モジュールで使用する定数や「フック関数」について、ユーザーが独自の値を指定できます。独自の値を指定することで、関連する App Engine サービスのデフォルトの動作をアプリケーションのニーズに応じて変更することが可能です。これらの定数は appengine_config.py ファイルで指定します。このファイルを作成したら、他のコードと一緒にデプロイします。

appengine_config.py を使用した Python モジュールの設定

App Engine の Python モジュールのいくつかは、appengine_config.py を使用して構成可能です。

サービスの Python モジュールをカスタマイズするには、そのサービスのルート ディレクトリに新しい appengine_config.py ファイルを作成します。このファイルを使用するのに必要な作業は、オーバーライド対象の定数やフック関数を定義することだけです。準備ができたら、app.yaml ファイルが格納されているディレクトリから gcloud app deploy を実行して、新しい appengine_config.py ファイルと一緒にアプリを再デプロイします。これにより、定義した定数やフック関数が該当する App Engine サービス内で使用されるようになります。

定数をオーバーライドするには、定数の名前の前に Python モジュール名とアンダースコアを付加してから値を割り当てます。たとえば、appstats でオーバーライドを編集するには、KEY_PREFIX の値を定義します。

appstats_KEY_PREFIX = '__my_custom_prefix__'

オーバーライドされるフック関数の命名は、他の Python モジュールの場合と同様です。たとえば、namespace_manager では、フック関数 default_namespace_for_requestappengine_config.py 内で次のようにオーバーライドできます。

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

App Engine の設定可能な Python モジュール

以下に示す各 Python モジュールは、appengine_config.py を使用して設定可能です。慣例により、フック関数は小文字、定数は大文字とします。

namespace_manager
  • default_namespace_for_request()(デフォルトの戻り値: None

appstats

datastore_admin

  • BASE_PATH(デフォルト: '/_ah/datastore_admin'
  • MAPREDUCE_PATH(デフォルト: '/_ah/mapreduce'
  • CLEANUP_MAPREDUCE_STATE(デフォルト: True

remoteapi

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()

プログラマによっては、デフォルトを 1 つのクラスにまとめる場合もあります。

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 で利用できるようになります。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Python 2 の App Engine スタンダード環境