最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

go使用Cron定時(shí)實(shí)現(xiàn)recover機(jī)制

 更新時(shí)間:2026年01月25日 10:48:46   作者:mao毛  
本文主要介紹了go使用Cron定時(shí)實(shí)現(xiàn)recover機(jī)制,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

robfig/cron v3 未實(shí)現(xiàn)recover

定時(shí)任務(wù)painc會(huì)導(dǎo)致程序內(nèi)存數(shù)據(jù)丟失,發(fā)生重啟,本教程是實(shí)現(xiàn)cron的recover機(jī)制。同樣也適用于長(zhǎng)連接場(chǎng)景,比如tcp鏈接后,用戶(hù)發(fā)生行為調(diào)用rpc服務(wù),但是在調(diào)用前的某些操作,被抽象出來(lái)了,編程不合理等場(chǎng)景,發(fā)生painc,會(huì)導(dǎo)致當(dāng)前用戶(hù)斷開(kāi)鏈接,數(shù)據(jù)丟失。

維護(hù)handler,defer 處理recover

type CornDesc struct {
    Name    string
    Spec    string
    NewFunc func()
}

func (c *CornDesc) Handle() {
    defer c.final()
    c.NewFunc()
}

func (c *CornDesc) final() {
    if err := recover(); err != nil {
       fmt.Printf("%s 捕獲運(yùn)行異常! err :%v stack %s\n", c.Name, err, debug.Stack())
    }
}

cmd 導(dǎo)入原則,此部分可以修改

var _Machine *Machine

type Machine struct {
    *cron.Cron
    exist map[string]int
}

func InitMachine(c *cron.Cron) *Machine {
    if _Machine == nil {
       _Machine = &Machine{
          Cron:  c,
          exist: make(map[string]int),
       }
    }
    return _Machine
}
func BaseMachine() *Machine {
    return _Machine
}
func (m *Machine) Run() {
    m.Cron.Run()
}
func (m *Machine) verify(cronDesc *CornDesc) error {
    if id, ok := m.exist[cronDesc.Name]; ok {
       return fmt.Errorf("任務(wù)已存在,name %s id %d", cronDesc.Name, id)
    }
    return nil
}
func (m *Machine) Register(cornDesc *CornDesc) error {
    if err := m.verify(cornDesc); err != nil {
       return err
    }
    id, err := m.Cron.AddFunc(cornDesc.Spec, cornDesc.Handle)
    if err != nil {
       return err
    }
    m.exist[cornDesc.Name] = int(id)
    return nil
}

到此這篇關(guān)于go使用Cron定時(shí)實(shí)現(xiàn)recover機(jī)制的文章就介紹到這了,更多相關(guān)go recover機(jī)制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go語(yǔ)言實(shí)現(xiàn)可靠的UDP 協(xié)議的示例詳解

    Go語(yǔ)言實(shí)現(xiàn)可靠的UDP 協(xié)議的示例詳解

    UDP(用戶(hù)數(shù)據(jù)報(bào)協(xié)議)是一種無(wú)連接、輕量級(jí)的傳輸層協(xié)議,這篇文章主要為大家詳細(xì)介紹了如何使用Go語(yǔ)言實(shí)現(xiàn)可靠的UDP 協(xié)議,需要的小伙伴可以了解下
    2025-07-07
  • Golang中crypto/cipher加密標(biāo)準(zhǔn)庫(kù)全面指南

    Golang中crypto/cipher加密標(biāo)準(zhǔn)庫(kù)全面指南

    本文主要介紹了Golang中crypto/cipher加密標(biāo)準(zhǔn)庫(kù),包括對(duì)稱(chēng)加密、非對(duì)稱(chēng)加密以及使用流加密和塊加密算法,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02
  • Go語(yǔ)言的變量定義詳情

    Go語(yǔ)言的變量定義詳情

    這篇文章主要介紹了Go語(yǔ)言的變量定義詳情,go定義變量的方式和c,c++,java語(yǔ)法不一樣,var?變量名類(lèi)型,var在前,變量名在中間,類(lèi)型在后面,下文更多詳細(xì)內(nèi)容需要的小伙伴可以參考一下
    2022-03-03
  • Golang環(huán)境變量設(shè)置和查看工具go env詳解

    Golang環(huán)境變量設(shè)置和查看工具go env詳解

    go env 是 Go 工具鏈中的一個(gè)命令,用于設(shè)置和查看當(dāng)前 Golang 環(huán)境的相關(guān)信息,對(duì)于理解、編譯和運(yùn)行 Golang 程序非常有用,本文就給大家簡(jiǎn)單的介紹一下Golang環(huán)境變量設(shè)置和查看工具go env,需要的朋友可以參考下
    2023-07-07
  • 基于Golang 高并發(fā)問(wèn)題的解決方案

    基于Golang 高并發(fā)問(wèn)題的解決方案

    這篇文章主要介紹了Golang 高并發(fā)問(wèn)題的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-05-05
  • golang中獲取變量類(lèi)型的方法總結(jié)

    golang中獲取變量類(lèi)型的方法總結(jié)

    golang中是沒(méi)有提供內(nèi)置函數(shù)來(lái)獲取變量的類(lèi)型的,但是通過(guò)一定的方式也可以獲取,下面主要給大家介紹了幾個(gè)golang獲取變量類(lèi)型的幾種方式,需要的朋友可以參考下
    2025-03-03
  • Golang并發(fā)編程之調(diào)度器初始化詳解

    Golang并發(fā)編程之調(diào)度器初始化詳解

    這篇文章主要為大家詳細(xì)介紹了Golang并發(fā)編程中關(guān)于調(diào)度器初始化的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-03-03
  • Go調(diào)度器學(xué)習(xí)之協(xié)作與搶占詳解

    Go調(diào)度器學(xué)習(xí)之協(xié)作與搶占詳解

    如果某個(gè)G執(zhí)行時(shí)間過(guò)長(zhǎng),其他的G如何才能被正常調(diào)度,這就引出了接下來(lái)的話(huà)題:協(xié)作與搶占。本文將通過(guò)一些示例為大家詳細(xì)講講調(diào)度器中協(xié)作與搶占的相關(guān)知識(shí),需要的可以參考一下
    2023-04-04
  • 使用Go語(yǔ)言實(shí)現(xiàn)HTTP客戶(hù)端請(qǐng)求并解析響應(yīng)的完整流程

    使用Go語(yǔ)言實(shí)現(xiàn)HTTP客戶(hù)端請(qǐng)求并解析響應(yīng)的完整流程

    在日常開(kāi)發(fā)中,無(wú)論是調(diào)用 RESTful API、采集網(wǎng)頁(yè)數(shù)據(jù),還是進(jìn)行微服務(wù)之間的通信,HTTP 客戶(hù)端幾乎無(wú)處不在,本文聚焦于如何使用 Go 實(shí)現(xiàn)一個(gè) HTTP 客戶(hù)端,完成請(qǐng)求發(fā)送、響應(yīng)解析、錯(cuò)誤處理、Header與Body提取等完整流程,需要的朋友可以參考下
    2025-08-08
  • Golang實(shí)現(xiàn)檢測(cè)SSL證書(shū)有效期

    Golang實(shí)現(xiàn)檢測(cè)SSL證書(shū)有效期

    本文主要為大家詳細(xì)介紹如何使用Go語(yǔ)言中的crypto/tls模塊來(lái)獲取網(wǎng)站的SSL/TLS證書(shū)信息并檢查其有效期,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2026-04-04

最新評(píng)論

晋宁县| 承德县| 永康市| 重庆市| 江源县| 土默特左旗| 桂东县| 长治市| 多伦县| 阳春市| 丹寨县| 岐山县| 合山市| 石柱| 潼南县| 巫溪县| 双牌县| 西平县| 洮南市| 石屏县| 尼玛县| 繁昌县| 塔城市| 富源县| 沈阳市| 茶陵县| 山西省| 德惠市| 马关县| 河东区| 大新县| 台东县| 绥江县| 白银市| 正镶白旗| 克什克腾旗| 弥勒县| 塔河县| 明光市| 山东| 托克托县|