Configuración Remote_api con App Engine

Utilizando Python, estoy tratando de conectarme al controlador remote_api de mi aplicación AppEngine, pero sigo recibiendo un error. Lo que quiero hacer es configurar los apéndices remote_api para enrutar las llamadas a la base de datos a través de eso y acceder directamente al almacén de datos de mi aplicación. Entonces, primero, importo las bibliotecas remote_api, luego llamo a ConfigureRemoteApi en el módulo de código auxiliar e bash usar las llamadas al almacén de datos remoto. Aquí hay un código de ejemplo:

from google.appengine.ext.remote_api import remote_api_stub def test_remote_api(): # This function is called when I want to use the remote api instead of the local datastore access remote_api_stub.ConfigureRemoteApi('myapp.appspot.com', '/_ah/remote_api', auth_func, '') def auth_func: # This actually returns a tuple with my credentials to skip the console input return ('username', 'password') 

Ok, ahora, he probado mi información de inicio de sesión y el nombre de la aplicación con remote_api_shell.py, pero recibo un error como este:

 File "C:\Program Files(x86)\Google\google_appengine\google\appengine\tools\dev_appserver_blobstore.py", line 79, in GetBlobStorage return apiproxy_stub_map.apiproxy.GetStub('blobstore').storage AttributeError: 'RemoteStub' object has no attribute 'storage' 

Y luego obtengo un 404: No encontrado de la aplicación, que sé que está mal ya que el acceso a la aplicación desde la Web me da el resultado. ¿Qué debo hacer para configurar el remote_api_stub para que no aparezca este error?

¡Gracias!

    asumiendo que está utilizando un almacén de datos de alta replicación ahora …

    Su app_id es probablemente incorrecto, y también necesita pasar el parámetro de dirección. Saqué esto hace un rato mientras leía el libro de oreilly para appengine (el libro está muy desactualizado y no se recomienda)

     def attach_to_app(app_id, user=None, password=None, path=None, address=None): """ attaches to app_id instance at address (default: .appspot.com) if you don't specify a user/password you will be prompted for one if you don't specify an address it is assumed to be .appspot.com path: path to remote_api handler, if not specified, will use /_ah/remote_api """ path = path or "/_ah/remote_api" if not address: address = "%s.appspot.com" % app_id init_remote_api(app_id, path, address, user=user, password=password) def auth_func(): """ function to prompt user for credentials """ email_address = raw_input("Email Address: ") password = getpass.getpass("Password: ") return email_address, password def init_remote_api(app_id, path, address, user=None, password=None): """ generic wrapper to initialize the remoteapi for a given path required ========= app_id : the app_id of the application to connect to path: the path to the remote_api handler ex: /_ah/remote_api address: server to connect to ex: myapp.appspot.com if user and password are not specified you will be prompted on connection if needed """ if user and password: def my_auth(): return (user, password) else: my_auth = auth_func remote_api_stub.ConfigureRemoteApi(app_id, path, my_auth, address) remote_api_stub.MaybeInvokeAuthentication() os.environ["SERVER_SOFTWARE"] = "Development (remote_api)/1.0" # example APP_ID = "s~myapp" # when hrds was introduced it became necessary to specify app_id and address note the "s~..." ADDRESS = "myapp.appspot.com" attach_to_app(APP_ID, address=ADDRESS) 

    Si solo está interesado en acceder al almacén de datos, puede evitar el error de código auxiliar con el testBed :

     # First, create an instance of the Testbed class. myTestBed = testbed.Testbed() # Then activate the testbed, which prepares the service stubs for use. myTestBed.activate() # Next, declare which service stubs you want to use. myTestBed.init_blobstore_stub() myTestBed.init_logservice_stub()