func (this *Fetcher) pushTasksHandler(w http.ResponseWriter, req *http.Request) { log.Debugln("get request: ", req.RemoteAddr, req.URL) req.ParseForm() tasksJson := req.Form.Get("tasks") taskPacks := []types.TaskPack{} var err error = nil var result = types.JsonResult{} if tasksJson != "" { err = json.Unmarshal([]byte(tasksJson), &taskPacks) if err != nil { msg := "Unmarshal task packs error: " + err.Error() log.Errorln(msg) result.Err = ErrDataError result.Msg = msg } else { //添加任务到队列 //最多只允许执行1秒钟 timerChan := time.After(1 * time.Second) cnt := 0 for _, pack := range taskPacks { select { case this.taskQueue <- pack: cnt++ case <-timerChan: break } } result.Err = ErrOk result.Data = taskPacks[:cnt] //将成功进入队列的任务返回 } } else { msg := "missing `tasks` key or has no content in the POST request." log.Warnln(msg) result.Err = ErrInputError result.Msg = msg } utils.OutputJsonResult(w, result) }