Соединение с Google Cloud Datastore сбрасывается каждые 4-5 минут
Я экспериментирую с Google Datastore. Я обнаружил, что соединение продолжает сбрасываться каждые 4-5 минут. Что я могу с этим поделать?
Первый запрос после сброса соединения обычно занимает от 800 до 1000 мс. Это действительно не тот опыт, которого я с нетерпением ждал. И определенно не наши пользователи.
Вот код, который у меня есть. Каждые 4-5 минут я вижу ** Resetting DB connection...
на консоли.
from google.cloud import datastore
from google.cloud.exceptions import ServiceUnavailable
class DbException(Exception):
def __init__(self, message, *errors):
Exception.__init__(self, message)
self.errors = errors
class DataStore(object):
def __init__(self, entity_kind, json_credentials_path, project):
self._entity_kind = entity_kind
self._client = datastore.Client.from_service_account_json(
json_credentials_path=json_credentials_path,
project=project)
def _key(self, urn):
return self._client.key(self._entity_kind, urn)
def find(self, urn):
try:
return self._client.get(self._key(urn))
except ServiceUnavailable:
print('** Resetting DB connection...')
return self.find(urn)
def insert(self, urn, data, **kwargs):
try:
if not self.find(urn) is None:
raise DbException('Entity already exists.')
if 'exclude_from_indexes' in kwargs:
exi = kwargs['exclude_from_indexes']
entity = datastore.Entity(key=self._key(urn),
exclude_from_indexes=exi)
else:
entity = datastore.Entity(key=self._key(urn))
entity.update(data)
self._client.put(entity)
except ServiceUnavailable:
print('** Resetting DB connection...')
self.insert(urn, entity)