Browse Source

优化任务处理

xiexiaoyuan 2 years ago
parent
commit
088b71a185
1 changed files with 28 additions and 25 deletions
  1. 28 25
      task/task.go

+ 28 - 25
task/task.go

@@ -18,7 +18,7 @@ var taskList chan *Executor  //任务列表
 var once sync.Once
 func GetTaskList() chan *Executor {
 	once.Do(func() {
-		taskList = make(chan *Executor, 10000)
+		taskList = make(chan *Executor, 1000)
 	})
 	return taskList
 }
@@ -29,33 +29,36 @@ type Executor struct {
 }
 
 func (e *Executor) Exec()  {       //执行任务
-	defer func() {
-		if err := recover(); err !=nil {
-			stack := ""
-			msg := fmt.Sprintf("当前进程pid:%d; 父进程ppid:%d", os.Getpid(), os.Getppid())
-			stack += msg + "</br>"
-			global.LOG.Critical(msg)
-			msg = fmt.Sprintf("The params data is %v", e.params)
-			stack += msg + "</br>"
-			global.LOG.Critical(msg)
-			msg = fmt.Sprintf("Handler crashed with error %v", err)
-			stack += msg + "</br>"
-			global.LOG.Critical(msg)
-			for i := 1; ; i++ {
-				_, file, line, ok := runtime.Caller(i)
-				if !ok {
-					break
+	go func() {
+		defer func() {
+			if err := recover(); err !=nil {
+				stack := ""
+				msg := fmt.Sprintf("当前进程pid:%d; 父进程ppid:%d", os.Getpid(), os.Getppid())
+				stack += msg + "</br>"
+				global.LOG.Critical(msg)
+				msg = fmt.Sprintf("The params data is %v", e.params)
+				stack += msg + "</br>"
+				global.LOG.Critical(msg)
+				msg = fmt.Sprintf("Handler crashed with error %v", err)
+				stack += msg + "</br>"
+				global.LOG.Critical(msg)
+				for i := 1; ; i++ {
+					_, file, line, ok := runtime.Caller(i)
+					if !ok {
+						break
+					}
+					global.LOG.Critical(fmt.Sprintf("%s:%d", file, line))
+					stack = stack + fmt.Sprintln(fmt.Sprintf("%s:%d</br>", file, line))
 				}
-				global.LOG.Critical(fmt.Sprintf("%s:%d", file, line))
-				stack = stack + fmt.Sprintln(fmt.Sprintf("%s:%d</br>", file, line))
+				fmt.Println("stack:", stack)
+				go services.SendEmail(utils.APPNAME+"崩了"+time.Now().Format("2006-01-02 15:04:05"), stack, utils.EmailSendToUsers)
 			}
-			fmt.Println("stack:", stack)
-			go services.SendEmail(utils.APPNAME+"崩了"+time.Now().Format("2006-01-02 15:04:05"), stack, utils.EmailSendToUsers)
-		}
+		}()
+		//time.Sleep(60*time.Second)
+		//fmt.Println("i am here new")
+		e.f(e.params...)
 	}()
-	//fmt.Println("i am here")
-	//time.Sleep(60*time.Second)
-	e.f(e.params...)
+
 }
 
 func NewExecutor(f TaskFunc, params []interface{}) *Executor {