1

Python アプリを App Engine スタンダード環境から App Engine フレキシブル環境に移植しようとしています。App Engine のドキュメントの指示に従って、次のように app.yaml ファイルを「python-compat」モードを使用するように変更しました。

service: default
runtime: python-compat
api_version: 1
vm: true
threadsafe: true
instance_class: F2

inbound_services:
- warmup

builtins:
- remote_api: on

env_variables:
  GCLOUD_PROJECT: the-name-of-my-project

デプロイ時に、アプリケーションから (NDB API を使用して) データストアを呼び出そうとすると、次のトラックバック (切り捨てられた) が発生します。

File "/env/local/lib/python2.7/site-packages/google/appengine/datastore/datastore_rpc.py" in check_rpc_success
  1371.       rpc.check_success()
File "/env/local/lib/python2.7/site-packages/google/appengine/api/apiproxy_stub_map.py" in check_success
  579.       self.__rpc.CheckSuccess()
File "/env/local/lib/python2.7/site-packages/google/appengine/ext/vmruntime/vmstub.py" in _WaitImpl
  312.         raise self._ErrorException(*_DEFAULT_EXCEPTION)

Exception Type: RPCFailedError at /volume-list/
Exception Value: The remote RPC to the application server failed for call datastore_v3.RunQuery().

問題は何ですか?私が知る限り、App Engine のドキュメントには、python-compat ランタイムを使用して NDB をセットアップするための特別な指示はありません。

4

1 に答える 1

1

今週、このバグに出くわしました。それをデバッグし、App Engine サポートと協力した後、答えを見つけました。

詳細については、こちらの SO 回答を参照するか、次のコードを に追加してappengine_config.pyください。

try:
    import appengine.ext.vmruntime.vmstub as vmstub
except ImportError:
    pass
else:
    if isinstance(vmstub.DEFAULT_TIMEOUT, (int, long)):
        # Newer requests libraries do not accept integers as header values. 
        # Be sure to convert the header value before sending. 
        # See Support Case ID 11235929.
        vmstub.DEFAULT_TIMEOUT = bytes(vmstub.DEFAULT_TIMEOUT)
于 2016-10-22T23:41:19.453 に答える