У меня есть таблица в Google Cloud Datastore, где я храню небольшую структуру данных, которая написана в одной службе Python и читается в другой. Я использую gcloud версии 0.15.0. Вот код Python, который я использую для записи/чтения данных в/из НОД:Ошибки таймаута Google Cloud Datastore в python
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% отказов, что совершенно противоречит документации, в которой упоминается ожидаемая частота отказов 1 в 30K.
Мои вопросы, то есть:
Можно ли увеличить время ожидания в datastore.client.get и datastore.client.put звонки? Я не ищу ответы на основе повторений; уже пробовал и не хочу зависеть только от попыток.
Есть ли что-нибудь, что я должен делать при создании таблицы или настройке клиента, который может уменьшить эти ошибки таймаута?
Я где-то читал (https://github.com/GoogleCloudPlatform/gcloud-python/issues/1214), что Python gcloud использует httplib2.Http, который не является потокобезопасным и имеет проблемы с таймаутом. Есть ли способ использовать (более стабильный) пакет запросов Python?
Спасибо,
Примерно как часто являются призывы положить() и получить()? – Adam