作者:meili_ml_333_655 | 来源:互联网 | 2022-12-02 17:49
我在Gin Gonic中有一些REST服务,并且我需要每5秒使用一些调度程序来做一些工作。我已经尝试过了rakanalh
,gocron
但是似乎在初始化crons或gin路由之后编写的每个代码都不会执行。
func main() {
settings.AppSettings = settings.ReadSettings()
db.InitOracleDataBase()
OracleEnv, OracleSrv, OracleSes := db.GetOracleDB()
defer OracleEnv.Close()
defer OracleSrv.Close()
defer OracleSes.Close()
routes.Init()
gocron.Every(5).Seconds().Do(prOk)
<-gocron.Start()
}
prOk只是打印OK,在我发表评论之前它永远不会执行routes.init()
。如何同时运行cron和gin路由?
1> Raggaer..:
您需要在goroutine中执行gocron,因为主goroutine会阻塞(我想也会routes.Init()
启动HTTP服务器吗?)
func main() {
settings.AppSettings = settings.ReadSettings()
db.InitOracleDataBase()
OracleEnv, OracleSrv, OracleSes := db.GetOracleDB()
defer OracleEnv.Close()
defer OracleSrv.Close()
defer OracleSes.Close()
go func() {
gocron.Every(5).Seconds().Do(prOk)
<-gocron.Start()
}()
routes.Init()
}