go-admin-team / go-admin

基于Gin + Vue + Element UI & Arco Design & Ant Design 的前后端分离权限管理系统脚手架(包含了:多租户的支持,基础用户管理功能,jwt鉴权,代码生成器,RBAC资源控制,表单构建,定时任务等)3分钟构建自己的中后台项目;项目文档》:https://www.go-admin.pro V2 Demo: https://vue2.go-admin.dev V3 Demo: https://vue3.go-admin.dev Antd 订阅版:https://antd.go-admin.pro
https://www.go-admin.pro
MIT License
11.15k stars 2.32k forks source link

jobbase.go 中的 Setup 调用一次 setup 就会停止了, 是设计成这样吗 #778

Closed xpoy1 closed 1 month ago

xpoy1 commented 8 months ago

Reproduction link

https://github.com/go-admin-team/go-admin/blob/master/app/jobs/jobbase.go

Steps to reproduce

// Setup 初始化
func Setup(dbs map[string]*gorm.DB) {

    fmt.Println(time.Now().Format(timeFormat), " [INFO] JobCore Starting...")

    for k, db := range dbs {
        sdk.Runtime.SetCrontab(k, cronjob.NewWithSeconds())
        setup(k, db)
    }
}

func setup(key string, db *gorm.DB) {
    crontab := sdk.Runtime.GetCrontabKey(key)
    //....

    // 其中任务
    crontab.Start()
    fmt.Println(time.Now().Format(timeFormat), " [INFO] JobCore start success.")
    // 关闭任务
    defer crontab.Stop()
    select {}
}

What is expected?

for k, db := range dbs { 

是想对每个 db 循环执行setup?

What is actually happening?

setup 中 select {} 永久阻塞, 不会返回了

Environment Info
go-admin undefined
Go go
System any
Browser any
wenjianzhang commented 2 months ago

这里是针对多租户添加的初始化db