errGroup
默认情况下应在第一个错误发生时取消所有未完成的操作,但是这不见得是我们所需要的。如果忽略某些错误,让其它操作继续进行是有意义的的话,waitGroup
可能是个更好的选择
package main
import (
"context"
"fmt"
"net/http"
"os"
"os/signal"
"sync"
"syscall"
"time"
log "github.com/sirupsen/logrus"
)
func main() {
log.SetLevel(log.TraceLevel)
wg := &sync.WaitGroup{
}
srv := http.Server{
Addr: ":45678",
WriteTimeout: time.Second * 15,
ReadTimeout: time.Second * 15,
IdleTimeout: time.Second * 60,
}
http.Handle("/", Adapt(http.HandlerFunc(worker),
WithWaitGrp(wg),
Log()))
go StartServer(&srv)