- 优化任务
continuous-integration/drone/push Build is failing Details

master
李光春 2 years ago
parent 64ee822347
commit 3f7d37d014

@ -1,3 +1,7 @@
## v1.0.19
- 优化任务
## v1.0.18
- 更新任务

@ -1,4 +1,4 @@
package gojobs
package jobs_common
const (
TASK_IN = "IN" // 任务运行

@ -1,12 +1,9 @@
package gojobs
import (
"go.dtapp.net/goarray"
"go.dtapp.net/goip"
"go.dtapp.net/gojobs/jobs_gorm"
"go.dtapp.net/goredis"
"gorm.io/gorm"
"runtime"
)
type ConfigJobsGorm struct {
@ -19,16 +16,9 @@ func NewJobsGorm(config *ConfigJobsGorm) *jobs_gorm.JobsGorm {
var (
jobsGorm = &jobs_gorm.JobsGorm{}
)
jobsGorm.RunVersion = Version
jobsGorm.Os = runtime.GOOS
jobsGorm.Arch = runtime.GOARCH
jobsGorm.MaxProCs = runtime.GOMAXPROCS(0)
jobsGorm.Version = runtime.Version()
jobsGorm.MacAddrS = goarray.TurnString(goip.GetMacAddr())
jobsGorm.InsideIp = goip.GetInsideIp()
jobsGorm.OutsideIp = goip.GetOutsideIp()
jobsGorm.MainService = config.MainService
jobsGorm.Db = config.Db
jobsGorm.Redis = config.Redis
jobsGorm = jobs_gorm.NewGorm(jobs_gorm.JobsGorm{
Db: config.Db,
Redis: config.Redis,
}, config.MainService)
return jobsGorm
}

@ -7,7 +7,7 @@ import (
)
func (jobsGorm *JobsGorm) Check(tx *gorm.DB, vs []Task) {
if jobsGorm.MainService > 0 && len(vs) > 0 {
if jobsGorm.mainService > 0 && len(vs) > 0 {
for _, v := range vs {
diffInSecondWithAbs := gotime.Current().DiffInSecondWithAbs(gotime.SetCurrentParse(v.UpdatedAt).Time)
if diffInSecondWithAbs >= v.Frequency*3 {

@ -8,12 +8,12 @@ import (
// RefreshIp 刷新Ip
func (jobsGorm *JobsGorm) RefreshIp(tx *gorm.DB) {
xip := goip.GetOutsideIp()
if jobsGorm.OutsideIp == "" || jobsGorm.OutsideIp == "0.0.0.0" {
if jobsGorm.outsideIp == "" || jobsGorm.outsideIp == "0.0.0.0" {
return
}
if jobsGorm.OutsideIp == xip {
if jobsGorm.outsideIp == xip {
return
}
tx.Where("ips = ?", jobsGorm.OutsideIp).Delete(&TaskIp{}) // 删除
jobsGorm.OutsideIp = xip
tx.Where("ips = ?", jobsGorm.outsideIp).Delete(&TaskIp{}) // 删除
jobsGorm.outsideIp = xip
}

@ -1,18 +1,37 @@
package jobs_gorm
import "gorm.io/gorm"
import "go.dtapp.net/goredis"
import (
"go.dtapp.net/goarray"
"go.dtapp.net/goip"
"go.dtapp.net/gojobs"
"go.dtapp.net/goredis"
"gorm.io/gorm"
"runtime"
)
type JobsGorm struct {
RunVersion string // 运行版本
Os string // 系统类型
Arch string // 系统架构
MaxProCs int // CPU核数
Version string // GO版本
MacAddrS string // Mac地址
InsideIp string // 内网ip
OutsideIp string // 外网ip
MainService int // 主要服务
runVersion string // 运行版本
os string // 系统类型
arch string // 系统架构
maxProCs int // CPU核数
version string // GO版本
macAddrS string // Mac地址
insideIp string // 内网ip
outsideIp string // 外网ip
mainService int // 主要服务
Db *gorm.DB // 数据库
Redis goredis.App // 缓存数据库服务
}
func NewGorm(jobsGorm JobsGorm, mainService int) *JobsGorm {
jobsGorm.runVersion = gojobs.Version
jobsGorm.os = runtime.GOOS
jobsGorm.arch = runtime.GOARCH
jobsGorm.maxProCs = runtime.GOMAXPROCS(0)
jobsGorm.version = runtime.Version()
jobsGorm.macAddrS = goarray.TurnString(goip.GetMacAddr())
jobsGorm.insideIp = goip.GetInsideIp()
jobsGorm.outsideIp = goip.GetOutsideIp()
jobsGorm.mainService = mainService
return &jobsGorm
}

@ -13,7 +13,7 @@ func (jobsGorm *JobsGorm) Lock(info Task, id any) string {
if judgeCache != "" {
return judgeCache
}
jobsGorm.Redis.NewStringOperation().Set(cacheName, fmt.Sprintf("已在%v机器上锁成功", jobsGorm.OutsideIp), goredis.WithExpire(time.Millisecond*time.Duration(info.Frequency)*3))
jobsGorm.Redis.NewStringOperation().Set(cacheName, fmt.Sprintf("已在%v机器上锁成功", jobsGorm.outsideIp), goredis.WithExpire(time.Millisecond*time.Duration(info.Frequency)*3))
return ""
}
@ -30,6 +30,6 @@ func (jobsGorm *JobsGorm) LockForever(info Task, id any) string {
if judgeCache != "" {
return judgeCache
}
jobsGorm.Redis.NewStringOperation().Set(cacheName, fmt.Sprintf("已在%v机器永远上锁成功", jobsGorm.OutsideIp))
jobsGorm.Redis.NewStringOperation().Set(cacheName, fmt.Sprintf("已在%v机器永远上锁成功", jobsGorm.outsideIp))
return ""
}

@ -1,7 +1,7 @@
package jobs_gorm
import (
"go.dtapp.net/gojobs"
"go.dtapp.net/gojobs/jobs_common"
"gorm.io/gorm"
)
@ -34,7 +34,7 @@ func (m *Task) TableName() string {
// TaskTake 查询任务
func (jobsGorm *JobsGorm) TaskTake(tx *gorm.DB, customId string) (result Task) {
tx.Where("custom_id = ?", customId).Where("status = ?", gojobs.TASK_IN).Take(&result)
tx.Where("custom_id = ?", customId).Where("status = ?", jobs_common.TASK_IN).Take(&result)
return result
}
@ -52,13 +52,13 @@ func (jobsGorm *JobsGorm) TaskCustomIdTakeStatus(tx *gorm.DB, Type, customId, st
// TaskFind 查询任务
func (jobsGorm *JobsGorm) TaskFind(tx *gorm.DB, frequency int64) (results []Task) {
tx.Table("task").Select("task.*").Where("task.frequency = ?", frequency).Where("task.status = ?", gojobs.TASK_IN).Where("task_ip.ips = ?", jobsGorm.OutsideIp).Order("task.id asc").Joins("left join task_ip on task_ip.task_type = task.type").Find(&results)
tx.Table("task").Select("task.*").Where("task.frequency = ?", frequency).Where("task.status = ?", jobs_common.TASK_IN).Where("task_ip.ips = ?", jobsGorm.outsideIp).Order("task.id asc").Joins("left join task_ip on task_ip.task_type = task.type").Find(&results)
return jobsGorm.taskFindCheck(results)
}
// TaskFindAll 查询任务
func (jobsGorm *JobsGorm) TaskFindAll(tx *gorm.DB, frequency int64) (results []Task) {
tx.Where("frequency = ?", frequency).Where("status = ?", gojobs.TASK_IN).Order("id asc").Find(&results)
tx.Where("frequency = ?", frequency).Where("status = ?", jobs_common.TASK_IN).Order("id asc").Find(&results)
return results
}
@ -68,7 +68,7 @@ func (jobsGorm *JobsGorm) taskFindCheck(lists []Task) (results []Task) {
if v.SpecifyIp == "" {
results = append(results, v)
} else {
if jobsGorm.OutsideIp == v.SpecifyIp {
if jobsGorm.outsideIp == v.SpecifyIp {
results = append(results, v)
}
}

@ -35,27 +35,27 @@ func (jobsGorm *JobsGorm) TaskIpUpdate(tx *gorm.DB, taskType, ips string) *gorm.
// TaskIpInit 实例任务ip
func (jobsGorm *JobsGorm) TaskIpInit(tx *gorm.DB, ips map[string]string) bool {
if jobsGorm.OutsideIp == "" || jobsGorm.OutsideIp == "0.0.0.0" {
if jobsGorm.outsideIp == "" || jobsGorm.outsideIp == "0.0.0.0" {
return false
}
tx.Where("ips = ?", jobsGorm.OutsideIp).Delete(&TaskIp{}) // 删除
tx.Where("ips = ?", jobsGorm.outsideIp).Delete(&TaskIp{}) // 删除
for k, v := range ips {
if v == "" {
jobsGorm.TaskIpUpdate(tx, k, jobsGorm.OutsideIp)
jobsGorm.TaskIpUpdate(tx, k, jobsGorm.outsideIp)
} else {
find := strings.Contains(v, ",")
if find == true {
// 包含
parts := strings.Split(v, ",")
for _, vv := range parts {
if vv == jobsGorm.OutsideIp {
jobsGorm.TaskIpUpdate(tx, k, jobsGorm.OutsideIp)
if vv == jobsGorm.outsideIp {
jobsGorm.TaskIpUpdate(tx, k, jobsGorm.outsideIp)
}
}
} else {
// 不包含
if v == jobsGorm.OutsideIp {
jobsGorm.TaskIpUpdate(tx, k, jobsGorm.OutsideIp)
if v == jobsGorm.outsideIp {
jobsGorm.TaskIpUpdate(tx, k, jobsGorm.outsideIp)
}
}
}

@ -1,3 +1,3 @@
package gojobs
const Version = "1.0.18"
const Version = "1.0.19"

Loading…
Cancel
Save