JM Developer
JM Developer

Reputation: 47

Error 301 / 404 uploading data with appcfg.py App Engine 1.8 for python

7.5 to 1.8 in App Engine SDK and now I can't do upload data. This is the error:

appcfg.py upload_data --url=http://192.168.1.106:8001/ --filename=database --num_threads=4 --rps_limit=500
08:46 PM Uploading data records.
[INFO    ] Logging to bulkloader-log-20130528.204655
[INFO    ] Throttling transfers:
[INFO    ] Bandwidth: 250000 bytes/second
[INFO    ] HTTP connections: 8/second
[INFO    ] Entities inserted/fetched/modified: 500/second
[INFO    ] Batch Size: 10
Error 301: --- begin server output ---

--- end server output ---

When I use: /_ah/remote_api this is the error.

appcfg.py upload_data --url=http://192.168.1.106:8001/_ah/remote_api --filename=database --num_threads=4 --rps_limit=500
08:48 PM Uploading data records.
[INFO    ] Logging to bulkloader-log-20130528.204813
[INFO    ] Throttling transfers:
[INFO    ] Bandwidth: 250000 bytes/second
[INFO    ] HTTP connections: 8/second
[INFO    ] Entities inserted/fetched/modified: 500/second
[INFO    ] Batch Size: 10
Error 404: --- begin server output ---
404 Not Found
The resource could not be found.

--- end server output ---

I've test it with localhost (using the default configuration) and the result is exactly the same. Why 1.8 version is not working when exactly the same is working OK with 1.7.5? Any ideas?

EDIT: I've test with bulkloader too to make the thing easier, this is the result:

1) I've dump the database in my APP in GAE with this command:

bulkloader.py --dump --url=<myapp> --filename=dumpBetaServer 

and everything is ok. I have like result a dump called dumpBetaServer.

2) Now, I try to restore this dump to my Development Server:

bulkloader.py --restore --url=http://192.168.1.106:8001 --filename=dumpBetaServer --num_threads=1

And this is the result:

[INFO    ] Logging to bulkloader-log-20130529.081227
[INFO    ] Throttling transfers:
[INFO    ] Bandwidth: 250000 bytes/second
[INFO    ] HTTP connections: 8/second
[INFO    ] Entities inserted/fetched/modified: 20/second
[INFO    ] Batch Size: 10
Traceback (most recent call last):
  File "/usr/local/bin/bulkloader.py", line 171, in <module>
    run_file(__file__, globals())
  File "/usr/local/bin/bulkloader.py", line 167, in run_file
    execfile(script_path, globals_)
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/bulkloader.py", line 4401, in <module>
    sys.exit(main(sys.argv))
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/bulkloader.py", line 4397, in main
    return _PerformBulkload(arg_dict)
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/bulkloader.py", line 4165, in _PerformBulkload
    throttle_class=throttle_class)
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/bulkloader.py", line 4072, in _GetRemoteAppId
    rpc_server_factory=throttled_rpc_server_factory, secure=secure)
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/remote_api/remote_api_stub.py", line 659, in GetRemoteAppId
    app_id = GetRemoteAppIdFromServer(server, path, rtok)
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/remote_api/remote_api_stub.py", line 568, in GetRemoteAppIdFromServer
    response = server.Send(path, payload=None, **urlargs)
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/appengine_rpc.py", line 393, in Send
    f = self.opener.open(req)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 400, in open
    response = meth(req, response)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 513, in http_response
    'http', request, response, code, msg, hdrs)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 438, in error
    return self._call_chain(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 372, in _call_chain
    result = func(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 521, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 301: Moved Permanently

When I try with this other command:

bulkloader.py --restore --url=http://192.168.1.106:8001/_ah/remote_api --filename=dumpBetaServer --num_threads=1

This is the result:

[INFO    ] Logging to bulkloader-log-20130529.081755
[INFO    ] Throttling transfers:
[INFO    ] Bandwidth: 250000 bytes/second
[INFO    ] HTTP connections: 8/second
[INFO    ] Entities inserted/fetched/modified: 20/second
[INFO    ] Batch Size: 10
Traceback (most recent call last):
  File "/usr/local/bin/bulkloader.py", line 171, in <module>
    run_file(__file__, globals())
  File "/usr/local/bin/bulkloader.py", line 167, in run_file
    execfile(script_path, globals_)
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/bulkloader.py", line 4401, in <module>
    sys.exit(main(sys.argv))
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/bulkloader.py", line 4397, in main
    return _PerformBulkload(arg_dict)
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/bulkloader.py", line 4165, in _PerformBulkload
    throttle_class=throttle_class)
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/bulkloader.py", line 4072, in _GetRemoteAppId
    rpc_server_factory=throttled_rpc_server_factory, secure=secure)
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/remote_api/remote_api_stub.py", line 659, in GetRemoteAppId
    app_id = GetRemoteAppIdFromServer(server, path, rtok)
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/remote_api/remote_api_stub.py", line 568, in GetRemoteAppIdFromServer
    response = server.Send(path, payload=None, **urlargs)
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/appengine_rpc.py", line 393, in Send
    f = self.opener.open(req)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 400, in open
    response = meth(req, response)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 513, in http_response
    'http', request, response, code, msg, hdrs)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 438, in error
    return self._call_chain(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 372, in _call_chain
    result = func(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 521, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 404: Not Found

EDIT 2: This is my app.yaml

#  For Google App Engine deployment, copy this file to app.yaml
#  and edit as required
#  See http://code.google.com/appengine/docs/python/config/appconfig.html
#  and http://web2py.com/book/default/chapter/11?search=app.yaml

application: <myapp>
version: 31
api_version: 1

# use this line for Python 2.5
#
runtime: python

# use these lines for Python 2.7
# upload app with: appcfg.py update web2py (where 'web2py' is web2py's root directory)
#
# runtime: python27
# threadsafe: true    # true for WSGI & concurrent requests (Python 2.7 only)

default_expiration: "24h"   # for static files

handlers:

- url: /(?P<a>.+?)/static/(?P<b>.+)
  static_files: applications/\1/static/\2
  upload: applications/(.+?)/static/(.+)
  secure: always

- url: /favicon.ico
  static_files: applications/welcome/static/favicon.ico
  upload: applications/welcome/static/favicon.ico

- url: /robots.txt
  static_files: applications/welcome/static/robots.txt
  upload: applications/welcome/static/robots.txt

- url: .*
  script: gaehandler.py         # CGI
#  script: gaehandler.wsgiapp    # WSGI (Python 2.7 only)
  secure: optional

admin_console:
  pages:
  - name: Appstats
    url: /_ah/stats


builtins:
- remote_api: on
- appstats: on
- admin_redirect: on
- deferred: on

Thank you for your help!

Upvotes: 1

Views: 991

Answers (1)

Sebastian Kreft
Sebastian Kreft

Reputation: 8199

The new devappserver starts different services at different ports. In the general case it will start three services: your app (default server), admin server (equivalent to the admin console at appengine.google.com) and an API server. The logs will show something like:

INFO 2013-05-31 16:34:58,397 api_server.py:148] Starting API server at: http://localhost:48392

INFO 2013-05-31 16:34:58,408 dispatcher.py:96] Starting server "default" running at: http://localhost:8080

INFO 2013-05-31 16:34:58,420 admin_server.py:112] Starting admin server at: http://localhost:8000

The url you need to pass to the bulkuploader is the one of your app (default server).

Upvotes: 2

Related Questions