- use utils.CallFuncAsync when possible.
This commit is contained in:
@@ -107,7 +107,7 @@ func (m *DurableTaskMan) StartTask(taskID string) error {
|
|||||||
d := m.tasks[taskID]
|
d := m.tasks[taskID]
|
||||||
if d.cmdChan == nil {
|
if d.cmdChan == nil {
|
||||||
d.cmdChan = make(chan string)
|
d.cmdChan = make(chan string)
|
||||||
go func() {
|
utils.CallFuncAsync(func() {
|
||||||
failedItemCount := 0
|
failedItemCount := 0
|
||||||
for _, taskItem := range d.items {
|
for _, taskItem := range d.items {
|
||||||
if taskItem.Status == 0 {
|
if taskItem.Status == 0 {
|
||||||
@@ -137,7 +137,7 @@ func (m *DurableTaskMan) StartTask(taskID string) error {
|
|||||||
d.data.UpdatedAt = d.data.FinishedAt
|
d.data.UpdatedAt = d.data.FinishedAt
|
||||||
dao.UpdateEntity(nil, d.data, "Status", "FinishedAt", "UpdatedAt")
|
dao.UpdateEntity(nil, d.data, "Status", "FinishedAt", "UpdatedAt")
|
||||||
}
|
}
|
||||||
}()
|
})
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return errors.New("任务已经启动")
|
return errors.New("任务已经启动")
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ func (task *ParallelTask) Run() {
|
|||||||
task.run(func() {
|
task.run(func() {
|
||||||
globals.SugarLogger.Debugf("ParallelTask.Run %s", task.Name)
|
globals.SugarLogger.Debugf("ParallelTask.Run %s", task.Name)
|
||||||
for i := 0; i < task.ParallelCount; i++ {
|
for i := 0; i < task.ParallelCount; i++ {
|
||||||
go func() {
|
utils.CallFuncAsync(func() {
|
||||||
var chanRetVal interface{}
|
var chanRetVal interface{}
|
||||||
retVal := make([]interface{}, 0)
|
retVal := make([]interface{}, 0)
|
||||||
for {
|
for {
|
||||||
@@ -152,7 +152,7 @@ func (task *ParallelTask) Run() {
|
|||||||
task.subFinishChan <- chanRetVal
|
task.subFinishChan <- chanRetVal
|
||||||
}
|
}
|
||||||
task.locker.RUnlock()
|
task.locker.RUnlock()
|
||||||
}()
|
})
|
||||||
}
|
}
|
||||||
for _, job := range task.jobList {
|
for _, job := range task.jobList {
|
||||||
task.taskChan <- job
|
task.taskChan <- job
|
||||||
|
|||||||
@@ -209,14 +209,20 @@ func (t *BaseTask) MarshalJSON() ([]byte, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (t *BaseTask) run(taskHandler func()) {
|
func (t *BaseTask) run(taskHandler func()) {
|
||||||
go func() {
|
utils.CallFuncAsync(func() {
|
||||||
|
defer func() {
|
||||||
|
if r := recover(); r != nil {
|
||||||
|
globals.SugarLogger.Errorf("panic in BaseTask.run task:%s, task detail:%s", t.Name, utils.Format4Output(t, false))
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
taskHandler()
|
taskHandler()
|
||||||
for _, subTask := range t.Children {
|
for _, subTask := range t.Children {
|
||||||
if _, err := subTask.GetResult(0); err != nil {
|
if _, err := subTask.GetResult(0); err != nil {
|
||||||
globals.SugarLogger.Warnf("BaseTask run, failed with error:%v", err)
|
globals.SugarLogger.Warnf("BaseTask run, failed with error:%v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}()
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *BaseTask) finishedOneJob(itemCount int, err error) {
|
func (t *BaseTask) finishedOneJob(itemCount int, err error) {
|
||||||
|
|||||||
@@ -79,12 +79,12 @@ func RefreshConfig(configKey string, expiresTime time.Duration, configGetter fun
|
|||||||
token, err := refreshFunc() // 这样写的目的是强制第一次调用时要刷新一次
|
token, err := refreshFunc() // 这样写的目的是强制第一次调用时要刷新一次
|
||||||
if err == nil {
|
if err == nil {
|
||||||
configSetter(token)
|
configSetter(token)
|
||||||
go func() {
|
utils.CallFuncAsync(func() {
|
||||||
for {
|
for {
|
||||||
time.Sleep(sleepGap)
|
time.Sleep(sleepGap)
|
||||||
refreshFunc()
|
refreshFunc()
|
||||||
}
|
}
|
||||||
}()
|
})
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user