Skip to content

Commit 79fa1b2

Browse files
committed
Add SafelyDo the Task
1 parent d4ab12f commit 79fa1b2

File tree

1 file changed

+26
-2
lines changed

1 file changed

+26
-2
lines changed

Diff for: sky.go

+26-2
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@ package sky
22

33
import (
44
"context"
5+
"errors"
56
"flag"
67
"fmt"
78
"net/http"
89
"os"
910
"text/tabwriter"
11+
"time"
1012

1113
"github.com/WiFeng/go-sky/config"
1214
"github.com/WiFeng/go-sky/helper"
@@ -120,9 +122,31 @@ func LoadAppConfig(conf interface{}) error {
120122
return LoadConfig("app", conf)
121123
}
122124

125+
func safelyDo(f func()) (err error) {
126+
defer func() {
127+
if panicErr := recover(); panicErr != nil {
128+
log.Errorw(context.Background(), "panic error", "err", panicErr)
129+
err = errors.New("panic error")
130+
}
131+
}()
132+
f()
133+
return
134+
}
135+
123136
// RegisterTask ...
124-
func RegisterTask(f func(), df func()) {
125-
go f()
137+
func RegisterTask(f func(), df func(), sync bool) {
138+
if sync {
139+
if safelyDo(f) != nil {
140+
log.Panicf(context.Background(), "panic error")
141+
}
142+
} else {
143+
for {
144+
go safelyDo(f)
145+
time.Sleep(60 * time.Second)
146+
}
147+
148+
}
149+
126150
helper.AddDeferFunc(df)
127151
}
128152

0 commit comments

Comments
 (0)