Skip to content

Commit 8a705c5

Browse files
partheavchudnov-g
andauthored
feat: add client debug logging support for server side streaming REST calls (#2340)
Co-authored-by: Victor Chudnovsky <vchudnov@google.com>
1 parent 9310dd9 commit 8a705c5

File tree

2 files changed

+18
-6
lines changed

2 files changed

+18
-6
lines changed

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

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -262,17 +262,24 @@ class {{service.name}}RestTransport(_Base{{ service.name }}RestTransport):
262262
resp = self._interceptor.post_{{ method.name|snake_case }}(resp)
263263
response_metadata = [(k, str(v)) for k, v in response.headers.items()]
264264
resp, _ = self._interceptor.post_{{ method.name|snake_case }}_with_metadata(resp, response_metadata)
265-
{# TODO(https://github.com/googleapis/gapic-generator-python/issues/2279): Add logging support for rest streaming. #}
266-
{% if not method.server_streaming %}
267265
if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor(logging.DEBUG): # pragma: NO COVER
266+
{# TODO(https://github.com/googleapis/gapic-generator-python/issues/2389): #}
267+
{# Depending how we want to log (a) receiving a streaming response vs (b) exposing the next streamed item to the user, we could possibly want to log something here #}
268+
{# (a) should always happen in api-core #}
269+
{# (b) could happen in api-core, or it could happen here when we iterate to the next streamed item that was previously received. #}
270+
{% if not method.server_streaming %}
268271
try:
269272
response_payload = {% if method.output.ident.is_proto_plus_type %}{{ method.output.ident }}.to_json(response){% else %}json_format.MessageToJson(resp){% endif %}
270273

271274
except:
272275
{# TODO(https://github.com/googleapis/gapic-generator-python/issues/2283): Remove try/except once unit tests are updated. #}
273276
response_payload = None
277+
{% endif %}{# if not method.server_streaming #}
274278
http_response = {
279+
{# Not logging response payload for server streaming here. See comment above. #}
280+
{% if not method.server_streaming %}
275281
"payload": response_payload,
282+
{% endif %}{# if not method.server_streaming #}
276283
"headers": dict(response.headers),
277284
"status": response.status_code,
278285
}
@@ -286,7 +293,6 @@ class {{service.name}}RestTransport(_Base{{ service.name }}RestTransport):
286293
"httpResponse": http_response,
287294
},
288295
)
289-
{% endif %}{# if not method.server_streaming #}
290296
return resp
291297

292298
{% endif %}{# method.void #}

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

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -222,17 +222,24 @@ class Async{{service.name}}RestTransport(_Base{{ service.name }}RestTransport):
222222
resp = await self._interceptor.post_{{ method.name|snake_case }}(resp)
223223
response_metadata = [(k, str(v)) for k, v in response.headers.items()]
224224
resp, _ = await self._interceptor.post_{{ method.name|snake_case }}_with_metadata(resp, response_metadata)
225-
{# TODO(https://github.com/googleapis/gapic-generator-python/issues/2279): Add logging support for rest streaming. #}
226-
{% if not method.server_streaming %}
227225
if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor(logging.DEBUG): # pragma: NO COVER
226+
{# TODO(https://github.com/googleapis/gapic-generator-python/issues/2389): #}
227+
{# Depending how we want to log (a) receiving a streaming response vs (b) exposing the next streamed item to the user, we could possibly want to log something here #}
228+
{# (a) should always happen in api-core #}
229+
{# (b) could happen in api-core, or it could happen here when we iterate to the next streamed item that was previously received. #}
230+
{% if not method.server_streaming %}
228231
try:
229232
response_payload = {% if method.output.ident.is_proto_plus_type %}{{ method.output.ident }}.to_json(response){% else %}json_format.MessageToJson(resp){% endif %}
230233

231234
except:
232235
{# TODO(https://github.com/googleapis/gapic-generator-python/issues/2283): Remove try/except once unit tests are updated. #}
233236
response_payload = None
237+
{% endif %}{# if not method.server_streaming #}
234238
http_response = {
239+
{# Not logging response payload for server streaming here. See comment above. #}
240+
{% if not method.server_streaming %}
235241
"payload": response_payload,
242+
{% endif %}{# if not method.server_streaming #}
236243
"headers": dict(response.headers),
237244
"status": "OK", # need to obtain this properly
238245
}
@@ -246,7 +253,6 @@ class Async{{service.name}}RestTransport(_Base{{ service.name }}RestTransport):
246253
},
247254
)
248255

249-
{% endif %}{# if not method.server_streaming #}
250256
return resp
251257

252258
{% endif %}{# method.void #}

0 commit comments

Comments
 (0)