日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

php小編百草為您介紹一種名為gocron的函數,它是一個標準庫實現,具備可測試的特性。gocron函數的設計目的是為了提供一種簡便的方式來創建和管理定時任務。它可以幫助開發人員輕松地編寫和調度多個定時任務,同時還提供了靈活的測試功能,方便開發人員進行單元測試和功能驗證。無論是在開發環境還是生產環境,gocron函數都是一個強大而可靠的工具,可用于實現各種復雜的定時任務需求。

問題內容

我需要按一定的時間間隔運行作業(點擊休息端點,然后將消息發送到隊列)。目前我有這個功能,它使用 gocron – https://github.com/go-co-op/gocron

但是目前沒有停止該功能的機制,因此我無法干凈地測試它。

func RunSchedule(cronExpression string, myFunction func()) error {
    scheduler := gocron.NewScheduler(time.UTC)
    _, err := scheduler.Cron(cronExpression).StartImmediately().Do(myFunction)
    if err != nil {
        return err
    }
    scheduler.StartBlocking()
    return nil
}

登錄后復制

它按要求執行,并以所需的時間間隔運行參數化函數,但我確信必須有一個更清晰的解決方案 – 可能是標準庫。

解決方法

您可以只返回 .stop 函數:

func runschedule(cronexpression string, myfunction func()) (stop func(), err error) {
    scheduler := gocron.newscheduler(time.utc)
    _, err = scheduler.cron(cronexpression).startimmediately().do(myfunction)
    if err != nil {
        return nil, err
    }
    go func() {
        scheduler.startblocking()
    }()

    return scheduler.stop, nil
}

登錄后復制

然后在您的測試中您可以執行以下操作:

called := 0
stop, err := RunSchedule("some-schedule", func() {
    called++
})
time.Sleep(time.Second * 1) // whatever you need to do 
stop()
if called != 1 {
    t.Fail("called should be 1")
}

登錄后復制

分享到:
標簽:標準庫
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定