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 ERROR 2013-08-05 14:19:05,716 handler.py:384] service_name の処理中の例外: "datastore_v4" メソッド: "AllocateIds" リクエスト: ""トレースバック (最後の最後の呼び出し): ファイル "/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_appengine/google/appengine/api/apiproxy_stub_map.py"、94 行目、MakeSyncCall return stubmap.MakeSyncCall(service, call, request, response) File "/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(service, call, request, response) ファイル "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/remote_api /remote_api_stub.py"、234 行目、_MakeRealSyncCall raise pickle.loads(response_pb.exception()) AttributeError: 'NoneType' object has no attribute '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" リクエスト: "" トレースバック (最新の呼び出しが最後): ファイル "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle /Contents/Resources/google_appengine/google/appengine/ext/remote_api/handler.py"、380 行目、投稿 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_stub_map.py"、94 行目、MakeSyncCall の return stubmap.MakeSyncCall(service, call, request, response) File "/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(service, call, request, response) File "/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' オブジェクトに no属性 'THREADSAFE' INFO 2013-08-05 14:19:05,802 module.py:595] デフォルト: "POST /_ah/remote_api HTTP/1.1" 200 96app/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 96app/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

4

3 に答える 3

2

TL; DR:return response.ParseFromString(response_pb.response()) 228 行目に google\appengine\ext\remote_api\remote_api_stub.py を追加して、このエラーを回避しました。

SDK 1.8.3 で同様のエラーが発生しました。トレースバックは次のとおりです。

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'

私はちょっと「ハッキング」しました (: 228 行目の remote_api_stub.py に を追加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())
于 2013-08-08T12:26:39.720 に答える