在Golang中,Flask的@before_first_request相当于什么?

时间:2014-08-25 20:44:36

标签: python go flask

出于性能原因,我们正在将烧瓶应用程序切换为golang。在烧瓶中,有" before_first_request"表示应用程序启动时要运行的功能。此函数只运行一次。我一直在阅读文档,但在golang中找不到任何等价物....它存在吗? (我想它不必是net / http包的一部分)

我们的烧瓶:

@before_first_request
def before(*args, **kwargs):
    ....
    return

1 个答案:

答案 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
    }
}