Должен ли я беспокоиться о datastoreRpcErrors? - PullRequest
0 голосов
/ 21 мая 2018

Когда я запускаю задания потока данных, которые записывают данные в облачное хранилище данных Google, иногда я вижу, что метрики показывают, что у меня было одно или два datastoreRpcErrors:

enter image description here

Поскольку эти записи в хранилище данных обычно содержат партию ключей, мне интересно в ситуации с RpcError, произойдет ли некоторая повторная попытка автоматически.Если нет, то какой будет хороший способ справиться с этими случаями?

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

tl; dr : по умолчанию datastoreRpcErrors будет автоматически использовать 5 повторных попыток.

Я копаю код datastoreio в луче Python SDK.Похоже, что окончательные мутации сущности сбрасываются в пакетном режиме через DatastoreWriteFn().

# Flush the current batch of mutations to Cloud Datastore.
_, latency_ms = helper.write_mutations(
    self._datastore, self._project, self._mutations,
    self._throttler, self._update_rpc_stats,
    throttle_delay=_Mutate._WRITE_BATCH_TARGET_LATENCY_MS/1000)

RPCError перехватывается этим блоком кода в write_mutations в helper;и есть декоратор @retry.with_exponential_backoff для commit метода;и число повторов по умолчанию установлено на 5;retry_on_rpc_error определяет конкретные RPCError и SocketError причины для запуска повтора.

for mutation in mutations:
  commit_request.mutations.add().CopyFrom(mutation)
  @retry.with_exponential_backoff(num_retries=5,
                                  retry_filter=retry_on_rpc_error)
  def commit(request):
    # Client-side throttling.
    while throttler.throttle_request(time.time()*1000):
    try:
      response = datastore.commit(request)
      ...
    except (RPCError, SocketError):
      if rpc_stats_callback:
        rpc_stats_callback(errors=1)
      raise
      ...
0 голосов
/ 22 мая 2018

Я думаю, что вы должны прежде всего определить, какой тип ошибки произошел, чтобы увидеть, какие у вас варианты.

Однако в официальной документации Datastore есть список всех возможных ошибки и их коды ошибок .К счастью, они приходят с рекомендуемыми действиями для каждого.

Мой совет заключается в том, чтобы вы выполняли их рекомендации и искали альтернативы, если они не эффективны для вас

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...