2017-02-18 4 views
6

私はmodules.get_current_instance_id()を呼び出すことにより、実行中のプロセスのための短い整数のinstance_idを得ることができますが、これはアプリケーションの現行バージョンのインスタンスのリストに整数のインデックスを返します。これは私に他のものの間で、含まれている辞書を与える(Pythonで)どのようにApp Engineインスタンスのlong-form instance_idを取得できますか?

from google.appengine.api.app_identity import app_identity 
from googleapiclient.discovery import build 
from oauth2client.client import GoogleCredentials 

credentials = GoogleCredentials.get_application_default() 
service = build('appengine', 'v1', credentials=credentials) 
appsId = app_identity.get_application_id() 

rpc_result = service.apps().services().versions().instances().list(versionsId='23', servicesId='default', appsId=appsId).execute() 

print rpc_result['instances'][int(modules.get_current_instance_id())] 

、値は次のようなものになります'id'キーと値のペア:00c61b117cb3c50973d6a73225b3d807eb8e873e96abc59c46ebba168897b8dbd9a443af962df5

を私はこのような完全な六角形のinstance_idを取得するためにRPCを行うことができます

これは私が必要なものです。

この方法には2つの明らかな欠点があります。最初は、どこかでローカルで利用可能なものを得るためにRPCをやっているということです。 2つ目は、競合状態が存在するということです。 modules.get_current_instance_id()戻った場合は、たとえば、3が、インスタンス#2は、このプロセスには、そのインデックスの割り当ての間シャットダウンし、私は、RPCの応答を得るとき、私はrpc_resultの私のインデックスに1でオフにするつもりです。

アプリエンジンでこのIDを取得するにはどうすればよいですか?

答えて

0

あなたはINSTANCE_ID環境変数からそれを得ることができる必要があります。

os.eniron["INSTANCE_ID"] 

あなたはでそれを得ることができます

関連する問題