インタラクティブなコンソール - GAE

インタラクティブなコンソールで紹介されている「appengine_console.py」を今現在使えるように書き換えました。


事前準備として、app.yamlに以下を追加。

handlers:
    - url: /remote_api
      script: $PYTHON_LIB/google/appengine/ext/remote_api/handler.py
      login: admin

#appengine_console.py
import os, sys, code, getpass

# append path
#C:\\google_appengine
#C:\\google_appengine\lib\webob
#C:\\google_appengine\lib\django
#C:\\google_appengine\lib\yaml\lib
gae_path = 'C:\\google_appengine'
sys.path = [gae_path,
            os.path.join(gae_path,'lib','webob'),
            os.path.join(gae_path,'lib','django'),
            os.path.join(gae_path,'lib','yaml','lib')] + sys.path

from google.appengine.ext            import db
from google.appengine.ext.remote_api import remote_api_stub

def auth_func():
    return raw_input('Username:'), getpass.getpass('Password:')

if len(sys.argv) < 2:
    print 'Usage: %s app_id [host]' % (sys.argv[0],)
else:
    arg2 = len(sys.argv) > 2 and sys.argv[2]
    app_id = sys.argv[1]
    host = 'localhost:8080' if arg2 else '%s.appspot.com' % app_id

    remote_api_stub.ConfigureRemoteDatastore(app_id, '/remote_api', auth_func, host)
    code.interact('App Engine interactive console for %s%s' % (app_id,' @local' if arg2 else ''), None, locals())

本番データストアにアクセスできるだけでなく、ホストをローカルに設定すれば、当然ローカルのサーバーにもアクセスできるようになるだろうと思い試したらできたので、第3引数にTrueと評価される値を渡してやれば、ローカルサーバーにアクセスするよう修正した。

gae_path、ポート番号は適宜置き換えて下さい。

Usage
python appengine_console.py app_id [host]
[host]に何も渡さなければ本番サーバーに、Trueを渡すとローカルサーバーにアクセスすることになる。

remote_apiオモシロイ。
でもその話はまた気が向いたら。

0 Comments:

Recent Posts