Google AppEngine でローカルに立てたサーバのAPIに接続する方法

stubやらなんちゃらで迷ったけど、結局シンプルに解決した

環境

Mac OS Elcapitan
Python2.7
PyCharm

GoogleAppEngine SDK へのパスは既に通してあります

実装

ConfigureRemoteApi をいい感じに使う

def initialize():
  try:
    import dev_appserver
    dev_appserver.fix_sys_path()
  except ImportError:
    raise

  app_id = 'dev~nkapp'
  os.environ['APPLICATION_ID'] = app_id

  # connect to local
  def auth_func():
    return "dummy@example.com", "passwd"
  from google.appengine.ext.remote_api import remote_api_stub
  remote_api_stub.ConfigureRemoteApi(app_id, '/_ah/remote_api', auth_func, 'localhost:8080')

これを最初に呼んでおけば、後は自由にデータにアクセス出来る。

実用的に切り替えるならこんな感じ

# True->Local False->Remote
SETTING_CONNECT_TO_LOCAL = True

SETTING_APP_ID = 'nkapp'
SETTING_API_PATH = '/_ah/remote_api'

SETTING_LOCAL_SERVER_ADDR = 'localhost:8080'

def initialize():
  app_id = SETTING_APP_ID
  if SETTING_CONNECT_TO_LOCAL:
    app_id = 'dev~' + SETTING_APP_ID
  os.environ['APPLICATION_ID'] = app_id
  try:
    import dev_appserver
    dev_appserver.fix_sys_path()
  except ImportError:
    raise

  from google.appengine.ext.remote_api import remote_api_stub
  if SETTING_CONNECT_TO_LOCAL:
    # connect to local
    def auth_func():
      return "dummy@example.com", "passwd"
    remote_api_stub.ConfigureRemoteApi(app_id, SETTING_API_PATH, auth_func, SETTING_LOCAL_SERVER_ADDR)
  else:
    # connect to product
    # app_name-???.json
    os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = '/path/to/token/app_name-???.json'
    remote_api_stub.ConfigureRemoteApiForOAuth("%s.appspot.com" % app_id, SETTING_API_PATH, secure=True)

迷ったとこ

恥ずかしながら…. auth_func の中の dummy@example.com と passwd に何を設定すればいいか迷っておりました。 そのままで問題ないんですね(-ω- )

楽しいGAEライフを

ではでは

Atsumi3

したいことをします。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください