googleapis / googleapis/google-cloud-python

Routing differences between sync and async

未关闭
#16,387 1 条评论 0 个 reaction 已指派 1 人 已被 @daniel-sanche 认领 在 GitHub 查看
priority: p3 type: cleanup
主要语言
Python
星标
5.4k
派生
1.8k
平均合并
3 天 4 小时
30 天内合并 PR
122

描述

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

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。