kuangchanglang / graceful

graceful reload golang http server, zero downtime, compatible with systemd, supervisor

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

daemon 有两个线程

qianxiansheng90 opened this issue · comments

代码:
var tick1Interval=3
var cronGenerateTaskTick=time.NewTimer(time.Duration(tick1Interval)*time.Second)
func main() {
mux:=http.NewServeMux()
mux.HandleFunc("/write",HTTPSWrite)
go ss()
graceful.ListenAndServe(fmt.Sprintf(":9090"), mux)
}

func ss() {
for {
select {
case <-cronGenerateTaskTick.C:
fmt.Printf("%s:%d\n",time.Now().Format("15:04:05"),tick1Interval)
cronGenerateTaskTick.Reset(0*time.Second)
cronGenerateTaskTick=time.NewTimer(time.Duration(tick1Interval)time.Second)
time.Sleep(1
time.Second)
}
}
}

输出结果:
12:31:30:3
12:31:30:3
12:31:33:3
12:31:33:3
12:31:36:3

每次都有两个,如果使用http.ListenAndServe("0.0.0.0:9090",mux) 就不会有这个问题?
请教一下这个是怎么回事?

我好像明白了,因为fork了一次,所以有两个线程。

对的,这样主要是为为了兼容systemd和supervisor

👌,我用pid去重了