Соединение с 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)

0 ответов

Другие вопросы по тегам