【问题标题】:Use retryPolicy with python GRPC client将 retryPolicy 与 python GRPC 客户端一起使用
【发布时间】:2021-01-21 10:04:45
【问题描述】:

我已经非常努力地使用 GRPC 文档 (https://github.com/grpc/proposal/blob/master/A6-client-retries.md#retry-policy) 的嵌入 retryPolicy,但我不明白应该在我的代码中设置配置的位置。
理想情况下,我希望 python 客户端指定其重试策略,但我也有兴趣了解如何从服务器端管理它。

经过一番挖掘,我想出了这个剪断,但它不起作用。

import json
from grpc import insecure_channel

service_default_config = {
    # see https://github.com/grpc/proposal/blob/master/A6-client-retries.md#retry-policy-capabilities
    "retryPolicy": {
        "maxAttempts": 5,
        "initialBackoff": "1s",
        "maxBackoff": "10s",
        "backoffMultiplier": 2,
        "retryableStatusCodes": [
            "RESOURCE_EXHAUSTED",
            "UNAVAILABLE"
        ]
    }
}
service_default_config = json.dumps(service_default_config)

options = [
    ('grpc.service_config', service_default_config)
]

insecure_channel(hostname, options=options)

谁能指出相关文档让我了解它是如何工作的或向我解释我误解了什么?

【问题讨论】:

    标签: grpc grpc-python


    【解决方案1】:

    我对配置的语法有同样的问题。

    我找到了this

    简而言之,必须将 retryPolicy 指定为描述如何处理对特定服务的调用的 methodConfig 的一部分:

    import json
    import grpc
    
    json_config = json.dumps(
        {
            "methodConfig": [
                {
                    "name": [{"service": "<package>.<service>"}],
                    "retryPolicy": {
                        "maxAttempts": 5,
                        "initialBackoff": "0.1s",
                        "maxBackoff": "10s",
                        "backoffMultiplier": 2,
                        "retryableStatusCodes": ["UNAVAILABLE"],
                    },
                }
            ]
        }
    )
    
    address = 'localhost:50051'
    
    channel = grpc.insecure_channel(address, options=[("grpc.service_config", json_config)])
    

    &lt;package&gt;&lt;service&gt; 在您的 proto 文件中定义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-14
      • 1970-01-01
      • 2015-06-16
      • 2012-10-16
      • 2013-06-18
      • 1970-01-01
      • 1970-01-01
      • 2020-11-13
      相关资源
      最近更新 更多