GoogleAppEngineã§remote_apiã使ã s_thx>tmatsuo
GogoleAppEngineã§ãæ¥æ¬èªæ¤ç´¢ä½ã£ã¦ããã転置ã¤ã³ããã¯ã¹ã®ä½ãæ¹ãã¹ã£ããç°¡åã«ç´ã£ããã ãã©æ¢ã«appspot.comã§ä½æããã転置ã¤ã³ããã¯ã¹ãéªéãªã®ã§ä¸æ°ã«æ¶ãããããããã©ã«ãã®DashBordã§ã¯ä¸æ°ã«æ¶ããã¤ã³ã¿ã¼ãã§ã¼ã¹ãç¨æããã¦ããªãã20åãã¤ããããæã§æ¶ãã¦ããããå¯ããã¨ãã¦ããtmatsuæ§ãæãã®æãå·®ãã®ã¹ã¦ãããã
ãremote api ãããï¼http://code.google.com/intl/en/appengine/articles/remote_api.htmlã
ããããè²ã
ãã£ã¦ãçµå±ã®æåããã
ãã¼ã«ã«ã®shãããç´æ¥Googleã®ãµã¼ãã¼ã®ãã¼ã¿ãããããã
å®éã«æä½ããç©ãè²¼ã£ã¦ã¿ãã
% python appengine_cosole.py a2c-dev App Engine interactive console for a2c-dev >>> import ngram >>> import ngram.main >>> from google.appengine.ext import db >>> ent = ngram.main.Feed.all() >>> ent.count() Username:hogehoge@gmail.com Password: 0L >>> ent = ngram.main.InverseIndex.all() >>> ent.count() 666L >>> db.delete(ent) >>> ent.count() 646L >>> for i in ent: ... i.delete() ... >>> ent.count() 626L >>> entities = ent.fetch(400) >>> db.delete(entities) >>> entities = ent.fetch(400) >>> db.delete(entities) >>> ent = ngram.main.InverseIndex.all() >>> ent.count() 0L >>>
500å以ä¸ã®ãã¼ã¿ã䏿°ã«æä½ãããã¨ãåºæ¥ãªããããã®ã§ã400åãã¤æ¶ãã¦ã¿ããã¯ããã¯666åãæã£ãã®ã«ããã£ã2åã®æä½ã§å ¨é¨æ¶ãããæ¯ååãäºãããªãã³ã¼ãã«æ¸ãã¦ãè¯ããã©ããã¾ã«ããããããªããã£ã¡ã®æ¹ãå ¨ç¶ããã
以䏿é ã
app.yamlã« ãªã¢ã¼ãã¢ã¯ã»ã¹ç¨ã®urlã追å ããã
- url: /remote_api script: $PYTHON_LIB/google/appengine/ext/remote_api/handler.py login: admin
appã®ä¸ã«Pythonã¹ã¯ãªãããç¨æããã
#!/usr/bin/env python # coding:utf-8 import code import getpass import sys import os # g_pathã¯é©å®ãèªåã®ç°å¢ã«æ¸ãæãã¦ãã ãã g_path = "/Applications/MyApp/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine" extra_path = [ g_path, os.path.join(g_path, 'lib', 'antlr3'), os.path.join(g_path, 'lib', 'webob'), os.path.join(g_path, 'lib', 'django'), os.path.join(g_path, 'lib', 'yaml', 'lib') ] sys.path = extra_path + sys.path from google.appengine.ext.remote_api import remote_api_stub from google.appengine.ext import db def auth_func(): return raw_input('Username:'), getpass.getpass('Password:') if len(sys.argv) < 2: print "Usage: %s app_id [host]" % (sys.argv[0],) app_id = sys.argv[1] if len(sys.argv) > 2: host = sys.argv[2] else: host = '%s.appspot.com' % app_id remote_api_stub.ConfigureRemoteDatastore(app_id, '/remote_api', auth_func, host) code.interact('App Engine interactive console for %s' % (app_id,), None, locals())
ãã®ãã¡ã¤ã«ããGoogleã®è§£èª¬ãã¼ã¸ã®ãã¤ã®ã¾ã¾ã ã¨åããªãã¦ãtmatsuoæ°ã«æãã¦è²°ã£ãã9è¡ç®ã®g_pathã«ã¯ãappengineã®ã¤ã³ã¹ãã¼ã«ããã¦ããã¨ãããå·®ãæ¿ãã¦ããããã
ãã¨ã¯ãdeployãã¦æºåOK
python2.5 appengine_cosole.py yourApp-ID
ã¨è¨ã風ã«ãèµ·åããããã¨ã¯ãèªåã®ã¢ããªãé©å½ã«ã½ããããImport ããã°OK