开发者社区> 问答> 正文

阿里云OpenAPI 可以通过这个参数让接口限流时不直接报错而是重试几下或者等待一定时间吗?

golang调用ssl的openapi接口太频繁限流报错了,我看接口提供了个参数runtime option,阿里云OpenAPI 可以通过这个参数让接口限流时不直接报错而是重试几下或者等待一定时间吗?438fb1e3d3c8830729c4cc5b7ca50532.png

展开
收起
三分钟热度的鱼 2023-08-08 15:55:53 117 0
2 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    对于阿里云OpenAPI接口的并发限流,可以通过设置runtime options来实现自动重试和拦截错误。

    具体来说,可以设置以下参数:

    MaxRetry:最大重试次数

    RetryDelay:重试间隔时间,单位为毫秒

    RetryOnStatusCodes:指定需要重试的HTTP状态码

    Interceptors:自定义错误拦截器函数

    示例:

    go
    Copy
    client := client.NewClientWithOptions(map[string]interface{}{
    "MaxRetry": 3,
    "RetryDelay": 1000,
    "RetryOnStatusCodes": []string{"429", "500", "502", "503", "504"},
    "Interceptors": myInterceptor,
    })
    这里设置:

    MaxRetry为3,即最大重试3次
    RetryDelay为1000毫秒,每次重试间隔1秒
    RetryOnStatusCodes为429等状态码,即对这些状态码进行重试
    Interceptors指定了自定义拦截器函数myInterceptor
    拦截器函数可以 intercept 掉指定状态码的错误,并重试接口调用。

    这样就可以实现:

    当接口遇到 429 状态码(限流)时,自动重试 MaxRetry 次
    每次重试间隔 RetryDelay 毫秒
    经过多次重试还报错,再抛出错误
    通过设置 RuntimeOptions,可以优雅地处理阿里云 OpenAPI 接口限流的情况。

    2023-08-08 20:20:44
    赞同 展开评论 打赏
  • golang配置autoretry重试是可以的 等待不行。业务上可以判断异常类型 用业务代码执行等待。此回答整理自钉群“OpenAPI 开发者门户 - 值班服务群2群”

    2023-08-08 16:02:12
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
AutoTalk第七期:自动化工具-OpenAPI在线调试 立即下载
最大化阿里云OpenAPI能力的方法和实践 立即下载
低代码开发师(初级)实战教程 立即下载