gapic-generator-python icon indicating copy to clipboard operation
gapic-generator-python copied to clipboard

Surface a way to update wrapped methods

Open tseaver opened this issue 2 years ago • 0 comments

The generated retry policy and timeout for wrapped methods is not always suitable for every application (e.g., see https://github.com/googleapis/python-bigquery-storage/issues/315). Rather than:

from google.api_core import exceptions
from google.api_core import retry

_retry_abort_unavailable = retry.if_exception_type(
    exceptions.Abort, exceptions.ServiceUnavailable,
)

transport = client.transport
wrapper = transport._wrapped_methods[transport.append_rows]
wrapper._retry._predicate = _retry_abort_unavailable

it would be nicer if we had a way to say:


transport = client.transport
old_wrapper = transport.wrapped_method(transport.append_row)
new_wrapper = old_wrapper.with_timeout(90)
new_wrapper.retry = new_wrapper.retry.with_predicate(_retry_abort_unavailable).with_deadline(900)
transport.wrap_method(transport.append_row, new_wrapper)

tseaver avatar Oct 04 '21 19:10 tseaver