1

Я пытаюсь перенести приложение Python из стандартной среды App Engine в среду App Engine Flexible. После the directions in the App Engine documentation, я изменил свое app.yaml файл использовать режим «питон-Compat», как показано на рисунке:Datastore RPCFailedError после переноса приложения в App Engine Гибкая среда

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 

При развертывании любые попытки вызвать в хранилище из приложения (с помощью 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 нет специальной инструкции по настройке NDB с временем выполнения python-compat.

ответ

1

На этой неделе я столкнулся с этой ошибкой, и после отладки и работы с поддержкой App Engine нашел ответ.

Смотрите мой SO answer here for more details, или просто добавить следующий код 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) 
+0

в настоящее время работает. Спасибо! –

Смежные вопросы