Skip to content

Commit 3b4feff

Browse files
committed
added pre-wrapping to async client
1 parent 0982f3b commit 3b4feff

File tree

2 files changed

+27
-19
lines changed

2 files changed

+27
-19
lines changed

gapic/templates/%namespace/%name_%version/%sub/services/%service/async_client.py.j2

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -310,25 +310,7 @@ class {{ service.async_client_name }}:
310310

311311
# Wrap the RPC method; this adds retry and timeout information,
312312
# and friendly error handling.
313-
rpc = gapic_v1.method_async.wrap_method(
314-
self._client._transport.{{ method.transport_safe_name|snake_case }},
315-
{% if method.retry %}
316-
default_retry=retries.Retry(
317-
{% if method.retry.initial_backoff %}initial={{ method.retry.initial_backoff }},{% endif %}
318-
{% if method.retry.max_backoff %}maximum={{ method.retry.max_backoff }},{% endif %}
319-
{% if method.retry.backoff_multiplier %}multiplier={{ method.retry.backoff_multiplier }},{% endif %}
320-
predicate=retries.if_exception_type(
321-
{% for ex in method.retry.retryable_exceptions|sort(attribute="__name__") %}
322-
core_exceptions.{{ ex.__name__ }},
323-
{% endfor %}
324-
),
325-
deadline={{ method.timeout }},
326-
),
327-
{% endif %}
328-
default_timeout={{ method.timeout }},
329-
client_info=DEFAULT_CLIENT_INFO,
330-
)
331-
{% if method.field_headers %}
313+
rpc = self._client._transport._wrapped_methods[self._client._transport.{{ method.transport_safe_name|snake_case }}]
332314

333315
# Certain fields should be provided within the metadata header;
334316
# add these here.

gapic/templates/%namespace/%name_%version/%sub/services/%service/transports/grpc_asyncio.py.j2

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -378,6 +378,32 @@ class {{ service.grpc_asyncio_transport_name }}({{ service.name }}Transport):
378378
return self._stubs["test_iam_permissions"]
379379
{% endif %}
380380

381+
def _prep_wrapped_messages(self, client_info):
382+
# Precompute the wrapped methods.
383+
# override base class to use async wrappers
384+
self._wrapped_methods = {
385+
{% for method in service.methods.values() %}
386+
self.{{ method.transport_safe_name|snake_case }}: gapic_v1.method_async.wrap_method(
387+
self.{{ method.transport_safe_name|snake_case }},
388+
{% if method.retry %}
389+
default_retry=retries.Retry(
390+
{% if method.retry.initial_backoff %}initial={{ method.retry.initial_backoff }},{% endif %}
391+
{% if method.retry.max_backoff %}maximum={{ method.retry.max_backoff }},{% endif %}
392+
{% if method.retry.backoff_multiplier %}multiplier={{ method.retry.backoff_multiplier }},{% endif %}
393+
predicate=retries.if_exception_type(
394+
{% for ex in method.retry.retryable_exceptions|sort(attribute='__name__') %}
395+
core_exceptions.{{ ex.__name__ }},
396+
{% endfor %}
397+
),
398+
deadline={{ method.timeout }},
399+
),
400+
{% endif %}
401+
default_timeout={{ method.timeout }},
402+
client_info=client_info,
403+
),
404+
{% endfor %} {# precomputed wrappers loop #}
405+
}
406+
381407
def close(self):
382408
return self.grpc_channel.close()
383409

0 commit comments

Comments
 (0)