[发明专利]一种请求重试方法和装置在审
申请号: | 202010143465.8 | 申请日: | 2020-03-04 |
公开(公告)号: | CN113360815A | 公开(公告)日: | 2021-09-07 |
发明(设计)人: | 陈亚秋 | 申请(专利权)人: | 北京沃东天骏信息技术有限公司;北京京东世纪贸易有限公司 |
主分类号: | G06F16/958 | 分类号: | G06F16/958 |
代理公司: | 中原信达知识产权代理有限责任公司 11219 | 代理人: | 李阳;郭晗 |
地址: | 100176 北京市北京经济技术*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 请求 重试 方法 装置 | ||
本发明公开了一种请求重试方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:在第一请求的响应结果指示失败情况下,根据第一请求的当前已重试次数判断是否可重试;若可重试则确定当前正在重试的第二请求数量;如果该第二请求数量小于最大重试请求数量,则延迟重试等待时间后重试,否则等待一第二请求重试完毕后再延时重试等待时间重试,重试等待时间基于预设的初始等待时间间隔、第一请求当前已重试次数计算得到。该实施方式能限制重试请求个数,对每个请求执行有限次数重试,还能判断重试时延最佳时间,避免过多无效重试,无需对代码浸入式修改,重试逻辑与正常逻辑解耦,在前端调用接口失败时通过简单优雅可复用方式重试。
技术领域
本发明涉及计算机技术领域,尤其涉及一种请求重试方法和装置。
背景技术
在应用中经常需要实现如下功能:将数据上传到远程存储服务或者从远程存储服务拉取所需数据,同时在成功响应情况下做其他操作。这个功能可简单分为两个步骤:调取远程服务逻辑包装给处理方法返回处理结果;基于上一步的处理结果或者捕捉异常实现重试上传逻辑,否则继续逻辑操作。当所依赖的接口因内部错误或其他错误而返回系统异常时,重试机制就显得尤为重要,否则就需要人工操作进行重新调用。
目前前端ajax(Asynchronous Javascript And XML,异步JavaScript和XML)请求重试机制有几种方案:一是“手动”重试:在调用接口的时候,通过循环当接口请求出现异常时立刻重新请求,该方法虽然实现了重试,但是可能所依赖的接口尚未从网络异常中恢复,从而接下来的重试都是失败的,而且此机制直接对代码进行侵入式修改,重试方式不优雅;二是类似Axios库(一种HTTP库)的重试实践:通过Axios的响应拦截,获取响应结果后判断是否要重试及是否超过重试次数后,通过定时器进行延时处理,然后根据前述判断结果适时发起axios请求。该方式重试方式也不够优雅,并且不能判断时延的最佳时间。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
方案一和方案二均无法限制重试请求个数,无法优雅有效地执行重试,并且,方案一在所依赖的接口尚未从网络异常中恢复时,后续重试都是失败的,导致执行了较多的无效重试,且直接对代码进行侵入式修改,未能实现重试逻辑与正常逻辑的解耦,方案二不能判断时延的最佳时间,仍然无法避免较多的无效重试。
发明内容
有鉴于此,本发明实施例提供一种请求重试方法和装置,能够实现限制重试请求个数,并对每个请求执行有限次数地重试,还能判断重试时延的最佳时间,避免过多的无效重试,无需对代码进行浸入式修改,将重试逻辑与正常逻辑解耦,在前端调用接口失败时通过简单优雅可复用的方式实现重试。
为实现上述目的,根据本发明实施例的一个方面,提供了一种请求重试方法。
一种请求重试方法,包括:在服务器返回的对第一请求的响应结果指示失败的情况下,根据所述第一请求的当前已重试次数,判断所述第一请求是否可执行重试;在所述第一请求可执行重试的情况下,确定当前正在执行重试的第二请求数量;如果所述当前正在执行重试的第二请求数量小于最大重试请求数量,则延迟重试等待时间后对所述第一请求执行重试;如果所述当前正在执行重试的第二请求数量不小于所述最大重试请求数量,则等待其中一个所述第二请求重试完毕后,延时所述重试等待时间再对所述第一请求执行重试,所述重试等待时间是基于预设的初始等待时间间隔、所述第一请求的当前已重试次数计算得到的。
可选地,基于所述预设的初始等待时间间隔、所述第一请求的当前已重试次数,利用添加抖动的重试指数退避算法,计算所述重试等待时间。
可选地,基于所述预设的初始等待时间间隔、所述第一请求的当前已重试次数,利用所述添加抖动的重试指数退避算法,按照如下方式计算所述重试等待时间:
其中,random_between(a,b)是指取区间[a,b)中的一个值为结果,
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京沃东天骏信息技术有限公司;北京京东世纪贸易有限公司,未经北京沃东天骏信息技术有限公司;北京京东世纪贸易有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010143465.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:打印服务系统以及打印服务方法
- 下一篇:一种燃料电池热管理系统及其控制方法