我有一个项目,什么样的golang框架支持HTTP和cli模式?
它需要支持的API访问HTTP模式,并且还需要支持CLI模式下运行一些后台作业(如监控Redis的队列)
心中已经看了一些框架:杜松子酒,马丁尼,beego。但他们似乎并不支持它
任何人都可以给我一些建议?谢谢
我有一个项目,什么样的golang框架支持HTTP和cli模式?
它需要支持的API访问HTTP模式,并且还需要支持CLI模式下运行一些后台作业(如监控Redis的队列)
心中已经看了一些框架:杜松子酒,马丁尼,beego。但他们似乎并不支持它
任何人都可以给我一些建议?谢谢
在去一个框架不能真正限制你。我们以马提尼框架为例。
这里从他们的GitHub页面的第一个样本:
package main
import "github.com/go-martini/martini"
func main() {
m := martini.Classic()
m.Get("/", func() string {
return "Hello world!"
})
m.Run()
}
执行m.Run()
之前你就可以开始你想要的任何命令行工作。所有你需要做的是在另一个goroutine中启动它:
package main
import "github.com/go-martini/martini"
func main() {
// start some function doing background stuff
go someCliFunc()
// initiate a struct and start a job in the background
go func(){
cli := MyPackage.SomeCli{}
cli.Start()
}()
m := martini.Classic()
m.Get("/", func() string {
return "Hello world!"
})
m.Run()
}
实际上做背景的东西函数可以有这样的结构:
func someCliFunc() {
// do some initial stuff
defer func() {
// do some stuff on exit
}()
// start the loop
for {
// do stuff regularly
// make sure the loop does not use the entire cpu
time.Sleep(5*time.Second)
}
}
不要使用框架。 – Flimzy
@Flimzy说的第二件事。只需编写软件,而不是寻找框架。 – Adrian
谢谢,因为我需要快速完成工作,所以我选择使用框架,它可以加快我的发展。我同意,不要让框架限制自己 – Poisoner