首页 文章

appcfg.py upload_data在Google App Engine SDK 1.8.2中失败

提问于
浏览
3

我在Mac OS X 10.6.8系统上使用Google App Engine SDK 1.8.2版 . 应用程序本身是用Python 2.7编写的,尽管我认为这与问题无关 . 当我尝试在开发环境中批量加载数据存储区时,它会失败 . 我正在使用的命令是:

appcfg.py upload_data --config_file=bulkloader.yaml --kind=Capitulary --url=http://localhost:8080/_ah/remote_api --filename=upload.xml

这个命令适用于可以追溯到2010年的每个版本的SDK . 当SDK版本1.8.0出现时它就破灭了,当1.8.1出现时它再次运行,并且当1.8.2出现时再次破坏 .

在此先感谢您的帮助 .

错误信息如下:

INFO 2013-08-05 14:19:05,312 module.py:595]默认值:“GET / _ah / remote_api?rtok = 215098893971 HTTP / 1.1”200 70 INFO 2013-08-05 14:19:05,569 module.py :595]默认值:“GET / _ah / remote_api HTTP / 1.1”200 42错误2013-08-05 14:19:05,716 handler.py:384]处理service_name时出现异常:“datastore_v4”方法:“AllocateIds”请求:“ “Traceback(最近一次调用最后一次):文件”/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/remote_api/handler.py“,第380行, in post response_data = self.ExecuteRequest(request)File“/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/remote_api/handler.py”,第411行,在ExecuteRequest response_data)文件“/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/api/apiproxy_s tub_map.py“,第94行,在MakeSyncCall中返回stubmap.MakeSyncCall(服务,调用,请求,响应)文件”/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/ appengine / api / apiproxy_stub_map.py“,第328行,在MakeSyncCall rpc.CheckSuccess()文件中”/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/api/ apiproxy_rpc.py“,第156行,在_WaitImpl self.request,self.response中)文件”/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/remote_api /remote_api_stub.py“,第200行,在MakeSyncCall self._MakeRealSyncCall(服务,电话,请求,响应)文件”/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/ AppEngine上/ EXT / remote_api的/ remote_api_stub . py“,第234行,在_MakeRealSyncCall中引发pickle.loads(response_pb.exception())AttributeError:'NoneType'对象没有属性'THREADSAFE'INFO 2013-08-05 14:19:05,773 module.py:595]默认值: “POST / _ah / remote_api HTTP / 1.1”200 96 ERROR 2013-08-05 14:19:05,793 handler.py:384]处理service_name时出现异常:“datastore_v4”方法:“AllocateIds”请求:“”Traceback(最近一次)最后调用):文件“/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/remote_api/handler.py”,第380行,在post response_data = self .ExecuteRequest(request)文件“/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/remote_api/handler.py”,第411行,在ExecuteRequest response_data中)文件“/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengi ne / google / appengine / api / apiproxy_stub_map.py“,第94行,在MakeSyncCall中返回stubmap.MakeSyncCall(服务,调用,请求,响应)文件”/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/内容/资源/ google_appengine / google / appengine / api / apiproxy_stub_map.py“,第328行,在MakeSyncCall rpc.CheckSuccess()文件中”/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/ google_appengine / google / appengine / api / apiproxy_rpc.py“,第156行,在_WaitImpl self.request,self.response中)文件”/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine /google/appengine/ext/remote_api/remote_api_stub.py“,第200行,在MakeSyncCall self._MakeRealSyncCall(服务,电话,请求,响应)文件中“/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/remote_api/remote_api_stub.py”,第234行,在_MakeRealSyncCall中提升pickle.loads(response_pb.exception) ())AttributeError:'NoneType'对象没有属性'THREADSAFE'INFO 2013-08-05 14:19:05,802 module.py:595]默认值:“POST / _ah / remote_api HTTP / 1.1”200 96

3 回答

  • 2

    我们知道这个问题正在解决这个问题 . 我们正在appengine issue 9666跟踪此消息,请观看该主题以获取更新 . 很高兴你've got a workaround for now. This won' t影响bulkload ops反对 生产环境 .

  • 1

    我在SDK 1.8.5中遇到了同样的问题,可以验证它现在适用于1.8.6!

  • 1

    TL; DR: 我'hacked'围绕此错误,在第228行的google \ appengine \ ext \ remote_api \ remote_api_stub.py中添加 return response.ParseFromString(response_pb.response())

    我在SDK 1.8.3中有类似的错误,这里是Traceback:

    Traceback (most recent call last):
    
      File "C:\Dev\GAE\google\appengine\ext\remote_api\handler.py", line 380, in post
        response_data = self.ExecuteRequest(request)
    
      File "C:\Dev\GAE\google\appengine\ext\remote_api\handler.py", line 411, in ExecuteRequest
        response_data)
    
      File "C:\Dev\GAE\google\appengine\api\apiproxy_stub_map.py", line 94, in MakeSyncCall
        return stubmap.MakeSyncCall(service, call, request, response)
    
      File "C:\Dev\GAE\google\appengine\api\apiproxy_stub_map.py", line 328, in MakeSyncCall
        rpc.CheckSuccess()
    
      File "C:\Dev\GAE\google\appengine\api\apiproxy_rpc.py", line 156, in _WaitImpl
        self.request, self.response)
    
      File "C:\Dev\GAE\google\appengine\ext\remote_api\remote_api_stub.py", line 200, in MakeSyncCall
        self._MakeRealSyncCall(service, call, request, response)
    
      File "C:\Dev\GAE\google\appengine\ext\remote_api\remote_api_stub.py", line 234, in _MakeRealSyncCall
        raise pickle.loads(response_pb.exception())
    
    AttributeError: 'NoneType' object has no attribute 'THREADSAFE'
    

    我've kinda '已经被添加 return response.ParseFromString(response_pb.response()) ,因此忽略了有问题的错误检查 . upload_data现在有效,但我们希望他们在下一个版本中解决这个问题(;

    return response.ParseFromString(response_pb.response())
    if response_pb.has_application_error():
      error_pb = response_pb.application_error()
      raise apiproxy_errors.ApplicationError(error_pb.code(),
                                             error_pb.detail())
    elif response_pb.has_exception():
      raise pickle.loads(response_pb.exception())
    elif response_pb.has_java_exception():
      raise UnknownJavaServerError("An unknown error has occured in the "
                                   "Java remote_api handler for this call.")
    else:
      response.ParseFromString(response_pb.response())
    

相关问题