Modules API の使用

Modules API には、現在の動作環境に関する情報(モジュール、バージョン、インスタンス)を返す関数が用意されています。

Modules API には他にも、特定のモジュール、バージョン、インスタンスのアドレスを取得するための関数があります。これをアプリケーションで利用すると、リクエストをインスタンス間で送信することができ、これは開発と本番のどちらの環境でも可能です。

SDK から google.appengine.api.modules モジュールをインポートする必要があります。

from google.appengine.api import modules

次のコードサンプルでは、リクエストのモジュール名とインスタンス ID を取得する方法を示します。

module = modules.get_current_module_name()
instance_id = modules.get_current_instance_id()
self.response.write(
    'module_id={}&instance_id={}'.format(module, instance_id))

自動スケーリングされるモジュールのインスタンス ID は、一意の base64 エンコード値として返されます(例: e4b565394caa)。

同じアプリ内のモジュール間で通信するには、相手のモジュールのホスト名を取得します。

backend_hostname = modules.get_hostname(module='my-backend')
url = "http://{}/".format(backend_hostname)
try:
    result = urllib2.urlopen(url).read()
    self.response.write('Got response {}'.format(result))
except urllib2.URLError:
    pass

URL 取得サービスも利用できます。