出于性能原因,我们正在将烧瓶应用程序切换为golang。在烧瓶中,有" before_first_request"表示应用程序启动时要运行的功能。此函数只运行一次。我一直在阅读文档,但在golang中找不到任何等价物....它存在吗? (我想它不必是net / http包的一部分)
我们的烧瓶:
@before_first_request
def before(*args, **kwargs):
....
return
答案 0 :(得分:3)
一种方法是将函数逻辑放在模块的func init() { ... }
方法中。
否则您可以使用sync.Once
http://play.golang.org/p/SEJxEEDnxt
package main
import (
"fmt"
"sync"
)
func main() {
var once sync.Once
onceBody := func() {
fmt.Println("Only once")
}
done := make(chan bool)
for i := 0; i < 10; i++ {
go func() {
once.Do(onceBody)
done <- true
}()
}
for i := 0; i < 10; i++ {
<-done
}
}