目标

  • Golang 环境和基础语法学习
  • 学习使用 Golang 构建基本的 web 应用和常用的工具包的使用
  • 构建 web 应用中编译、部署等若干注意事项问题

项目名称 DCron

DCron 是通过 web 管理计划任务的系统,它并不是直接调用 Linux 的计划任务接口,而是基于 cron.v2 这个 golang 的库构建的,通过 DB 链接了 web 和 cron 计划任务服务。

项目目录

dcron
├── README.md
├── app
│   ├── bootstrap.go
│   ├── controller
│   └── service
├── application.go // main 入口
├── conf
│   └── conf.yaml
├── logs
│   └── dcron.cli.log
├── resource
│   ├── assets
│   ├── dcron_2018-03-09.sql
│   ├── images
│   └── templates
└── vendor // 依赖
    ├── github.com
    ├── golang.org
    ├── google.golang.org
    ├── gopkg.in
    └── vendor.json

功能

  • 计划任务列表
  • 停止删除计划任务
  • 查看任务以及任务运行的结果
  • 创建计划任务,任务创建时可以制定机器,保证任务可以运行在不同的机器上

Web 服务,如果不制定端口和 Host 可以用一下命令

./dcron

Cron 服务

./dcron -mode=cli

相关启动代码和参数参考:

func main() {

    mode := flag.String("mode", "server", "-mode=server|cli")
    port := flag.String("port", "8080", "-port=8080")
    host := flag.String("host", "", "-host=")
    flag.Parse()

    if bytes.EqualFold([]byte(*mode), []byte("cli")) {
        fmt.Println("Starting...cli mode...")
        app.RunCrond()
    } else {
        fmt.Println("Starting...server mode...")
        app.RunServer(*host, *port)
    }
}

项目依赖

因为项目是通过 govendor 来管理的,可以在 vendor 目录下看到相关的依赖

$ govendor list

 v  github.com/gin-contrib/sse
 v  github.com/gin-gonic/gin
 v  github.com/gin-gonic/gin/binding
 v  github.com/gin-gonic/gin/json
 v  github.com/gin-gonic/gin/render
 v  github.com/go-sql-driver/mysql
 v  github.com/golang/protobuf/proto
 v  github.com/json-iterator/go
 v  github.com/mattn/go-isatty
 v  github.com/modern-go/concurrent
 v  github.com/modern-go/reflect2
 v  github.com/ugorji/go/codec
 v  gopkg.in/go-playground/validator.v8
 v  gopkg.in/robfig/cron.v2
 v  gopkg.in/yaml.v2
 e  github.com/jinzhu/gorm
 e  github.com/jinzhu/inflection
pl  github.com/outman/dcron
 l  github.com/outman/dcron/app
 l  github.com/outman/dcron/app/controller
 l  github.com/outman/dcron/app/service
  m golang.org/x/sys/unix
  m google.golang.org/appengine/cloudsql

代码

https://github.com/outman/dcron

以上是本次主题的一些大纲。