Commit 54185df4 authored by astaxie's avatar astaxie

change admin to toolbox & support task

parent 16352579
......@@ -2,7 +2,7 @@ package beego
import (
"fmt"
"github.com/astaxie/beego/admin"
"github.com/astaxie/beego/toolbox"
"net/http"
"time"
)
......@@ -32,8 +32,9 @@ func init() {
BeeAdminApp.Route("/", AdminIndex)
BeeAdminApp.Route("/qps", QpsIndex)
BeeAdminApp.Route("/prof", ProfIndex)
BeeAdminApp.Route("/healthcheck", admin.Healthcheck)
BeeAdminApp.Route("/task", admin.TaskStatus)
BeeAdminApp.Route("/healthcheck", toolbox.Healthcheck)
BeeAdminApp.Route("/task", toolbox.TaskStatus)
BeeAdminApp.Route("/runtask", toolbox.RunTask)
FilterMonitorFunc = func(string, string, time.Duration) bool { return true }
}
......@@ -42,14 +43,14 @@ func AdminIndex(rw http.ResponseWriter, r *http.Request) {
}
func QpsIndex(rw http.ResponseWriter, r *http.Request) {
admin.StatisticsMap.GetMap(rw)
toolbox.StatisticsMap.GetMap(rw)
}
func ProfIndex(rw http.ResponseWriter, r *http.Request) {
r.ParseForm()
command := r.Form.Get("command")
if command != "" {
admin.ProcessInput(command, rw)
toolbox.ProcessInput(command, rw)
} else {
rw.Write([]byte("request url like '/prof?command=lookup goroutine'"))
}
......
package admin
import (
"fmt"
"net/http"
)
var AdminTaskList map[string]Tasker
type Tasker interface {
GetStatus() string
Run() error
}
type Task struct {
Taskname string
Spec Schedule
Errlist []map[uint64]string //errtime:errinfo
ErrLimit int //max length for the errlist 0 stand for there' no limit
}
func (t *Task) GetStatus() string {
return ""
}
func (t *Task) Run() error {
return nil
}
func (t *Task) SetCron(spec string) {
}
type Schedule struct {
Second uint64
Minute uint64
Hour uint64
DOM uint64
Month uint64
DOW uint64
}
func StartTask() {
}
func StopTask() {
}
func AddTask(taskname string, t Tasker) {
AdminTaskList[taskname] = t
}
func TaskStatus(rw http.ResponseWriter, req *http.Request) {
for tname, t := range AdminTaskList {
fmt.Fprintf(rw, "%s:%s", tname, t.GetStatus())
}
}
//to run a Task by http from the querystring taskname
//url like /task?taskname=sendmail
func RunTask(rw http.ResponseWriter, req *http.Request) {
req.ParseForm()
taskname := req.Form.Get("taskname")
if t, ok := AdminTaskList[taskname]; ok {
err := t.Run()
if err != nil {
fmt.Fprintf(rw, "%v", err)
}
fmt.Fprintf(rw, "%s run success,Now the Status is %s", t.GetStatus())
} else {
fmt.Fprintf(rw, "there's no task which named:%s", taskname)
}
}
func init() {
AdminTaskList = make(map[string]Tasker)
}
......@@ -2,9 +2,9 @@ package beego
import (
"fmt"
"github.com/astaxie/beego/admin"
beecontext "github.com/astaxie/beego/context"
"github.com/astaxie/beego/middleware"
"github.com/astaxie/beego/toolbox"
"net/http"
"net/url"
"os"
......@@ -861,9 +861,9 @@ Admin:
timeend := time.Since(starttime)
if FilterMonitorFunc(r.Method, requestPath, timeend) {
if runrouter != nil {
go admin.StatisticsMap.AddStatistics(r.Method, requestPath, runrouter.controllerType.Name(), timeend)
go toolbox.StatisticsMap.AddStatistics(r.Method, requestPath, runrouter.controllerType.Name(), timeend)
} else {
go admin.StatisticsMap.AddStatistics(r.Method, requestPath, "", timeend)
go toolbox.StatisticsMap.AddStatistics(r.Method, requestPath, "", timeend)
}
}
}
......
package admin
package toolbox
import (
"fmt"
......
package admin
package toolbox
import (
"fmt"
......
package admin
package toolbox
import (
"os"
......
package admin
package toolbox
import (
"fmt"
......
This diff is collapsed.
package toolbox
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment