diff --git a/main.go b/main.go index c01e7ef..f151ec8 100644 --- a/main.go +++ b/main.go @@ -10,9 +10,11 @@ import ( "io/fs" "os" "strings" + "sync" "unicode" "unsafe" + "github.com/FloatTech/zbputils/process" "github.com/fumiama/go-registry" "github.com/wdvxdr1123/ZeroBot/utils/helper" ) @@ -44,12 +46,26 @@ func main() { if err != nil { panic(err) } + defer r.Close() + var wg sync.WaitGroup + wg.Add(len(files)) for i, fn := range files { - fmt.Println("set", "data/"+fn, "=", hex.EncodeToString(helper.StringToBytes(md5s[i]))) - err = r.Set("data/"+fn, md5s[i]) - if err != nil { - panic(err) - } + go func(i int, fn string) { + defer wg.Done() + for c := 0; c < 5; c++ { + err = r.Set("data/"+fn, md5s[i]) + fmt.Println("set", "data/"+fn, "=", hex.EncodeToString(helper.StringToBytes(md5s[i]))) + if err == nil { + break + } + if c >= 4 { + panic("ERROR:" + err.Error() + "max retry times exceeded") + } else { + fmt.Println("ERROR:", err, ", retry times:", c) + } + process.SleepAbout1sTo2s() + } + }(i, fn) } - r.Close() + wg.Wait() }