Настройте ведение журнала Stackdriver, чтобы повторить попытку RESOURCE_EXHAUSTED - PullRequest
1 голос
/ 22 марта 2020

Я использую Google Cloud Logging в проекте python и использую его Client + CloudLoggingHandler.

from google.cloud.logging import Client
from google.cloud.logging.handlers import CloudLoggingHandler

В Google Cloud Platform у меня есть проект с включенным Stackdriver.

Пока я Журнал запросов на загрузку в минуту проблема с RESOURCE_EXHAUSTED кодом ошибки. Часть сообщения журнала:

2020-03-15 12:44:51 ERROR google.cloud.logging.handlers.transports.background_thread: Failed to submit 1 logs.
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/google/api_core/grpc_helpers.py", line 57, in error_remapped_callable
    return callable_(*args, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/grpc/_channel.py", line 826, in __call__
    return _end_unary_response_blocking(state, call, False, None)
  File "/usr/local/lib/python3.7/site-packages/grpc/_channel.py", line 729, in _end_unary_response_blocking
    raise _InactiveRpcError(state)
grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with:
    status = StatusCode.RESOURCE_EXHAUSTED
    details = "Quota exceeded for quota metric 'Log ingestion requests' and limit 'Log ingestion requests per minute' of service 'logging.googleapis.com' for consumer 'project_number:**********'."
    debug_error_string = "{"created":"***********","description":"Error received from peer **********","file":"src/core/lib/surface/call.cc","file_line":1056,"grpc_message":"Quota exceeded for quota metric 'Log ingestion requests' and limit 'Log ingestion requests per minute' of service 'logging.googleapis.com' for consumer 'project_number:**********'.","grpc_status":8}"
>

Таким образом, в этом случае это сообщение журнала будет потеряно для Stackdriver.

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

Я обнаружил, что в google.logging.v2.LoggingServiceV2 реализован некоторый механизм повторных попыток под капотом, но только для определенных кодов ошибок:

["DEADLINE_EXCEEDED", "INTERNAL", "UNAVAILABLE"]

Так что мой вопрос, есть ли способ включить повторную попытку на RESOURCE_EXHAUSTED ошибка во время записи журналов в Stackdriver?

Заранее спасибо.

google-cloud-logging == 1.14.0

...