首页 > 编程语言 >短视频商城源码,重试机制加强代码可靠性

短视频商城源码,重试机制加强代码可靠性

时间:2024-10-12 09:01:45浏览次数:1  
标签:context err 重试 源码 func 商城 函数

短视频商城源码,重试机制加强代码可靠性

场景

短视频商城源码服务依赖第三方服务或者其他服务,但有时第三方服务偶发性出现问题并且会快速的恢复,而我们的系统可能因为这些偶发性出现问题。所以无法保证以来服务的可靠性,但是我们可以通过其他的方式来保证我们的服务是稳定的,可靠的。
重试机制可以协助我们构建健壮的短视频商城源码。比如调用第三方服务或执行某操作时,出现执行失败,我们可以让其再重试几次再抛出错误。

设计原理

重试机制:某方法或者函数执行失败了重新执行,尝试重新执行后,尝试几次失败后结束。期间成功一次则表示成功。

重试次数
需要被重新执行方法

func add() (string, error) {
    var i = 1
    var j = 2
    result := i + j
    return strconv.Itoa(result), nil
}

func RetryFunc(count int, cback func() (string, error)) {
    for i := 0; i < count; i++ {
        result, err := cback()
        if err == nil {
            return result
        }
    }
}

// 应用
package main

func main(){
    Retry(3, add)
}

 

重试函数接收2个参数,一个是重试次数,一个是需要重新执行的函数。但函数都是固定的。可以进一步优化。

type Effector func(context.Context) (string, error)

func Retry(count int ,delay time.Duration, effector){
    return func(ctx. context.Context)(string, error){
        for r:=0; ;r++{
            response, err := effector()
            if err == nil || r>= count {
                return  response, err
             }
            fmt.Printf("Function call failed, retrying in %v", delay)
            select {
                case <- time.After(delay)
                case <- ctx.Done():
                    return "", ctx.Err()
            }
        }

    }
}

 

增加延时参数 delay 控制重试延时 ,使用匿名函数定义一个函数接收器,返回值为匿名函数的。所以重试函数接受三个参数:一个效应器,一个整数,描述函数重试传递的效应器的次数以及重试之间的延迟。
函数接收器的参数是 context ,context 主要用来在 goroutine 之间传递上下文信息。这里使用context主要是用于超时取消,然后快速返回。
context包主要提供了两种方式创建context:

context.Background 是上下文的默认值,所有其他的上下文都应该从它衍生(Derived)出来。
context.TODO 应该只在不确定应该使用哪种上下文时使用;

以上就是短视频商城源码,重试机制加强代码可靠性, 更多内容欢迎关注之后的文章

 

标签:context,err,重试,源码,func,商城,函数
From: https://www.cnblogs.com/yunbaomengnan/p/18459763

相关文章

  • 【关注可白嫖源码】人脸识别的实验课程 (案例分享)
    摘  要本研究设计和实现了一个人脸识别的实验课程系统。该系统以人脸识别技术为核心,结合SpringBoot框架的轻量级和快速开发优势,为教育实验课程提供了一个高效、便捷的解决方案。该系统利用人脸识别算法实现学生登录系统功能,提高了实验课程的安全性和管理效率。通过整合Spr......
  • 基于nodejs+vue基于JAVA的城镇社区服务管理平台[开题+源码+程序+论文]计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,城镇化进程的加快,社区服务管理面临着前所未有的挑战与机遇。传统的社区服务管理模式存在信息不透明、服务效率低、居民参与度不高等......
  • 基于nodejs+vue基于Java的超市进销存系统[开题+源码+程序+论文]计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展和商业竞争的日益激烈,超市作为零售业的重要组成部分,其管理效率和服务质量直接关系到企业的生存与发展。传统的超市进销存管理往往依......
  • 基于nodejs+vue基于Java的比亚迪汽车大数据评分系统[开题+源码+程序+论文]计算机毕业
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,大数据技术在各行各业中的应用日益广泛。汽车行业作为国民经济的重要支柱,其数据规模庞大且复杂。比亚迪作为中国新能源汽车的领军企......
  • 【02】手把手教你0基础部署SpringCloud微服务商城教学-Mybatis篇(下)
    上期回顾:【01】手把手教你0基础部署SpringCloud微服务商城教学-Mybatis篇(上)Part1.续接上文Mybatis-plus的批处理功能接下来我们学习一下IService的批量查询,我们用以往的for循环做一个对比这是for循环部分的代码privateUserbuilderUser(inti){Useruser=new......
  • 基于Uni-App的宠物寄养和购物商城系统 微信小程序
    项目介绍开发背景随着社会的快速发展和人们生活水平的不断提升,宠物已经成为许多家庭不可或缺的一部分。它们不仅是人们的忠实伙伴,更是情感的寄托和心灵的慰藉。然而,随着工作节奏的加快和生活压力的增加,许多宠物主人在面临出行、工作变动等临时情况时,往往难以找到合适的方......
  • 基于Uni-App的智慧农业农产品种植交流商城系统 微信小程序
    项目介绍该微信小程序的智慧农业采用Uni-weixin、SpringBoot框架技术,前端以小程序页面呈现给用户,结合后台java语言使页面更加完善,后台使用MySQL数据库进行数据存储。该微信小程序主要设计并完成了管理过程中的用户注册登录、个人信息修改、用户信息、知识科普、土壤信......
  • Spring源码理解 类接口说明
    FactoryBean、BeanFactoryBeanFactoryBeanFactory是管理和生产Bean的,它是用于访问SpringBean容器的根接口。,定义了管理Bean的方法,获取Bean、包含Bean、是否单例Bean、获取Bean类型等。Spring根据他提供了很多实现,如DefaultListableBeanFactory、XmlBeanFactory、Applica......
  • centos7.6源码方式安装python3.6.8
    1安装依赖包centos7.6是没有自带python3的[root@opgs201~]#cat/etc/redhat-releaseCentOSLinuxrelease7.6.1810(Core)[root@opgs201~]#python3bash:python3:commandnotfound...Similarcommandis:'python'先挂载iso文件,配置本地yum源##挂载虚拟机的光盘......
  • 计算机毕业设计 基于Django的学生选课系统的设计与实现 Python+Django+Vue 前后端分离
    ......