imikael21
imikael21

Reputation: 23

Application ID error with GAE remote API

I am trying to use the Remote API in a local Client, following instructions given in Google documentation (https://developers.google.com/appengine/docs/python/tools/remoteapi).

I first tried from the Remote API shell, and everything is working fine. I can connect to my remote datastore and fetch data.

But when I run the following script, which is very similar to Google's example :

#!/opt/local/bin/python2.7
import sys

SDK_PATH = "/usr/local/google_appengine/"
sys.path.append(SDK_PATH)
import dev_appserver
dev_appserver.fix_sys_path()

from google.appengine.ext.remote_api import remote_api_stub
import model.account

def auth_func():
  return ('myaccount', 'mypasswd')

remote_api_stub.ConfigureRemoteApi('myappid', '/_ah/remote_api', auth_func)

# Fetch some data
entries = model.account.list()
for a in entries:
    print a.name

then I get an error :

 Traceback (most recent call last):
    File "./remote_script_test.py", line 26, in <module>
      entries = model.account.list()
    [...]
    File "/Developer/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/datastore/datastore_rpc.py", line 1333, in check_rpc_success
      raise _ToDatastoreError(err)
google.appengine.api.datastore_errors.BadRequestError: Application Id (app) format is invalid: '_'

It says my application ID is a plain underscore '_', which is not the case since my app.yaml is correctly configured and when I do a

print app_identity.get_application_id()

from that script I get the correct application ID. I am under the impression that the GAE environment is not properly setup, but I could not figure out how to make it work. Does anyone have a full piece of code that works in this context ?

I am using Mac Os X Mountain Lion.

Upvotes: 1

Views: 299

Answers (1)

Chris Pushbullet
Chris Pushbullet

Reputation: 1069

You may wish to start with remote_api_shell.py and remove stuff until it breaks, rather than add in things until it works.

For instance there's a line after the one you copied: remote_api_stub.MaybeInvokeAuthentication() is that necessary? There may be a number of necessary lines in remote_api_shell.py, maybe better to customize that rather than start from scratch.

Upvotes: 0

Related Questions