上一篇介绍了我们设计定期任务调度器的思路
这一篇介绍数据库的表设计
首先定义两张表, 这里使用gorm来定义
type PeriodicTask struct { ID int `gorm:"primaryKey;autoIncrement"` Name string `gorm:"size:100"` Describe string `gorm:"size:300"` Status int Args string Git string `gorm:"size:100"` Entry string `gorm:"size:100"` Lang string `gorm:"size:10"` Cron string `gorm:"size:100"` MailList string `gorm:"size:200"` User Users UserID int `gorm:"size:30"` } type PeriodicTaskHistory struct { ID int `gorm:"primaryKey;autoIncrement"` PeriodicTask PeriodicTask PeriodicTaskID int Result int Output string `gorm:"size:50"` Executor string `gorm:"size:50"` Time FormartTime `gorm:"type:datetime"` Duration string `gorm:"size:50"` }
PeriodicTask用来存储任务信息
- Args: 存储敏感数据
- Status: 表示任务的状态, 0为正常, 1为暂停, 2为删除
- Git: 任务的git地址
- Entry: 任务的入口文件, 比如你有10个py文件, 但是任务的入口文件只有1个
- Lang: 任务的语言, 根据不同的语言, 我们调用不同的容器
- Cron: 任务的cron表达式
- MailList: 通知列表, 可以为空, 当不为空时, 每次任务执行完成, 都会发送邮件通知用户
- User: 任务的创建人是谁
PeriodicTaskHistory用来存储任务的执行信息
- PeriodicTask: 哪一个任务的日志
- Result: 0成功,1失败
- Output: 任务的输出, 可以捕获容器的标准错误输出和标准输出
- Executor: 执行人是谁, 如果是定期调度, 那么为Auto, 手动触发, 就是人的名字
- Time: 日志的创建时间
- Duration: 任务的耗时
发表回复