目前有一个需求就是使用golang运行一个web服务。
如何通过浏览器访问来启动或者关闭一个任务进程?
这个任务将会一直运行下去。
目前我采用的方法,不知道是否有更好的方法来进行控制
//匿名控制器。允许任意函数处理
package controller
import (
"github.com/gin-gonic/gin"
"fmt"
"time"
"runtime"
)
var Runing = false
var Exit = false
func Run() {
fmt.Println("Runing",Runing)
if Runing {
runtime.Goexit()
}
Runing = true
fmt.Println("Runing",Runing)
fmt.Println("Goid()",Goid())
num := 0
for true {
fmt.Println("num",num)
num++
if Exit {
runtime.Goexit()
}
time.Sleep(1 * time.Second)
}
}
//地址访问/api/test?open=true进行开启关闭
func Test(c *gin.Context){
open := c.Query("open")
if open == "true" {
Exit = false
go Run()
} else {
Exit = true
Runing = false
}
c.JSON(200,open)
}
你现在用 go 跑了一个 web 服务,那就用浏览器发请求啊,比如 /run/abc,go web server 就启动 abc 这个程序;请求 /stop/abc 就关闭 abc。web 服务那边就 fork 子进程来运行 abc,或者 kill 掉 abc。如果某个程序可以有多个,你还可以传递 pid