googleapis / googleapis/google-cloud-python

Routing differences between sync and async

Abierto
#16,387 1 comentario 0 reacciones 1 asignado Reclamado por @daniel-sanche Ver en GitHub
priority: p3 type: cleanup
Lenguaje dominante
Python
Estrellas
5.4k
Forks
1.8k
Merge medio
3 d 4 h
PR fusionados (30 d)
122

Descripción

I noticed that sync clients[add a bunch of code to validate routing params, while async clients do not.

[Example Sync:](https://github.com/googleapis/python-bigtable/blob/4105df762f1318c49bba030063897f0c50e4daee/google/cloud/bigtable_v2/services/bigtable/client.py#L543)
```
header_params = {}

routing_param_regex = re.compile(
"^(?Pprojects/[^/]+/instances/[^/]+/tables/[^/]+)$"
)
regex_match = routing_param_regex.match(request.table_name)
if regex_match and regex_match.group("table_name"):
header_params["table_name"] = regex_match.group("table_name")

if request.app_profile_id:
header_params["app_profile_id"] = request.app_profile_id

if header_params:
metadata = tuple(metadata) + (
gapic_v1.routing_header.to_grpc_metadata(header_params),
)
```

[Example Async:](https://github.com/googleapis/python-bigtable/blob/4105df762f1318c49bba030063897f0c50e4daee/google/cloud/bigtable_v2/services/bigtable/async_client.py#L292C1-L298C10)
```
# Certain fields should be provided within the metadata header;
# add these here.
metadata = tuple(metadata) + (
gapic_v1.routing_header.to_grpc_metadata(
(("table_name", request.table_name),)
),
)
```

---

The sync client's verification is currently very expensive, since it runs re.compile on each rpc call. It seems like it should be possible to remove the regex lines to match async. But maybe that counts as a breaking change?

If nothing else, the regex lines should be optimized

I can take this on if needed, let me know what you think

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.