googleapis / googleapis/google-cloud-python

Routing differences between sync and async

オープン
#16,387 コメント 1 件 リアクション 0 件 担当者 1 名 @daniel-sanche が担当を希望しています GitHub で見る
priority: p3 type: cleanup
主要言語
Python
スター
5.4k
フォーク
1.8k
平均マージ
3日 4時間
マージ済み PR(30日)
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 を短くまとめたダイジェスト。