Google Cloud Datastoreにテーブルがあり、小さなデータ構造が格納されています。このデータ構造はPythonサービスで作成され、別のPythonサービスで読み込まれます。私はgcloudバージョン0.15.0を使用しています。ここで私は読んで/へ/ GCDからのデータを書き込むために使用Pythonのコードは次のとおりです。PythonでGoogle Cloud Datastoreのタイムアウトエラーが発生する
from gcloud import datastore
import datetime
import json
class GCD(object):
def __init__(self, project_id):
self.client = datastore.Client(project_id)
def put(self, table, key, data):
with self.client.transaction():
entity = datastore.Entity(self.client.key(table, key), exclude_from_indexes=['context'])
entity.update({'context': json.dumps(data), 'created': datetime.datetime.utcnow(), 'done': True})
try:
self.client.put(entity)
except Exception as e:
print "GCD save failed with exception: %s" % e
return None
def get(self, table, key):
entity_key = self.client.key(table, key)
entity = None
try:
entity = self.client.get(entity_key)
except Exception as e:
print "GCD read failed with exception: %s" % e
if not entity:
return None
else:
return json.loads(entity['context'])
私は、読み取りの多数を観察しています/メッセージと障害を書く「読み出し動作がタイムアウトしました」。 > 5%の失敗は、30Kで1の予想される失敗率を記述している文書にはかなり違反しています。
私の質問は、以下のとおりです。
それはdatastore.client.getとdatastore.client.putの呼び出しでタイムアウトを増やすことは可能ですか?私は再試行に基づいて答えを探しているわけではありません。すでに試したことがあり、再試行だけに依存したくありません。
これらのタイムアウトエラーを緩和できるテーブルを作成したり、クライアントを設定するときに何かすべきことはありますか?
Python gcloudはスレッドセーフではなく、タイムアウトの問題があるhttplib2.Httpを使用しています(https://github.com/GoogleCloudPlatform/gcloud-python/issues/1214)。 (もっと安定した)Pythonリクエストパッケージを使う方法はありますか?
おかげで、
は
Wathの:-)いくつかの再試行メカニズムをお勧めしますか? – Adam