1

App Engine Standard Environment에서 App Engine Flexible 환경으로 Python 응용 프로그램을 이식하려고합니다. 같이 the directions in the App Engine documentation에 따라, 나는, "파이썬의 compat"모드를 사용하도록 내 애플리케이션 제목 파일을 변경했습니다 :App Engine으로 App을 이식 한 후 Datastore RPCFailedError가 있습니다.

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를 설정하는 특별한 지침이 없습니다.

답변

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

지금은 큰 작동합니다. 고맙습니다! –