| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- package containers
- import (
- log "github.com/sirupsen/logrus"
- "os"
- "strconv"
- "time"
- )
- var hbStopChan = make(chan struct{})
- func DoHeartbeat(hbFilePath string) {
- defer func() {
- if err := recover(); err != nil {
- log.Errorf("DoHeartbeat panic: %v", err)
- }
- }()
- doHeartbeat(hbFilePath)
- ticker := time.NewTicker(time.Second * 30)
- for {
- select {
- case <-ticker.C:
- doHeartbeat(hbFilePath)
- case <-hbStopChan:
- return
- }
- }
- }
- func doHeartbeat(hbFilePath string) {
- timeUnix := time.Now().Unix()
- timeStr := strconv.FormatInt(timeUnix, 10)
- if err := os.WriteFile(hbFilePath, []byte(timeStr), 0644); err != nil {
- log.Errorf("write heartbeat to file [%s] occurs error: %v", hbFilePath, err.Error())
- }
- }
- func StopHeartbeat() {
- close(hbStopChan)
- }
|