Code Monkey home page Code Monkey logo

gocron's Introduction

gocron - 定时任务管理系统

Downloads license Release

项目简介

使用Go语言开发的轻量级定时任务集中调度和管理系统, 用于替代Linux-crontab 查看文档

原有的延时任务拆分为独立项目延迟队列

功能特性

  • Web界面管理定时任务
  • crontab时间表达式, 精确到秒
  • 任务执行失败可重试
  • 任务执行超时, 强制结束
  • 任务依赖配置, A任务完成后再执行B任务
  • 账户权限控制
  • 任务类型
    • shell任务

    在任务节点上执行shell命令, 支持任务同时在多个节点上运行

    • HTTP任务

    访问指定的URL地址, 由调度器直接执行, 不依赖任务节点

  • 查看任务执行结果日志
  • 任务执行结果通知, 支持邮件、Slack、Webhook

截图

流程图 任务 Slack

支持平台

Windows、Linux、Mac OS

环境要求

MySQL

下载

releases

版本升级

安装

二进制安装

  1. 解压压缩包  
  2. cd 解压目录
  3. 启动
  • 调度器启动
    • Windows: gocron.exe web
    • Linux、Mac OS: ./gocron web
  • 任务节点启动, 默认监听0.0.0.0:5921
    • Windows: gocron-node.exe
    • Linux、Mac OS: ./gocron-node
  1. 浏览器访问 http://localhost:5920

源码安装

  • 安装Go 1.11+
  • go get -d github.com/ouqiang/gocron
  • export GO111MODULE=on
  • 编译 make
  • 启动
    • gocron ./bin/gocron web
    • gocron-node ./bin/gocron-node

docker

docker run --name gocron --link mysql:db -p 5920:5920 -d ouqg/gocron

配置: /app/conf/app.ini

日志: /app/log/cron.log

镜像不包含gocron-node, gocron-node需要和具体业务一起构建

开发

  1. 安装Go1.9+, Node.js, Yarn
  2. 安装前端依赖 make install-vue
  3. 启动gocron, gocron-node make run
  4. 启动node server make run-vue, 访问地址 http://localhost:8080

访问http://localhost:8080, API请求会转发给gocron

make 编译

make run 编译并运行

make package 打包

生成当前系统的压缩包 gocron-v1.5-darwin-amd64.tar.gz gocron-node-v1.5-darwin-amd64.tar.gz

make package-all 生成Windows、Linux、Mac的压缩包

命令

  • gocron

    • -v 查看版本
  • gocron web

    • --host 默认0.0.0.0
    • -p 端口, 指定端口, 默认5920
    • -e 指定运行环境, dev|test|prod, dev模式下可查看更多日志信息, 默认prod
    • -h 查看帮助
  • gocron-node

    • -allow-root *nix平台允许以root用户运行
    • -s ip:port 监听地址
    • -enable-tls 开启TLS
    • -ca-file   CA证书文件  
    • -cert-file 证书文件
    • -key-file 私钥文件
    • -h 查看帮助
    • -v 查看版本

To Do List

  • 版本升级
  • 批量开启、关闭、删除任务
  • 调度器与任务节点通信支持https
  • 任务分组
  • 多用户
  • 权限控制

程序使用的组件

反馈

提交issue

ChangeLog

v1.5

  • 前端使用Vue+ElementUI重构
  • 任务通知
    • 新增WebHook通知
    • 自定义通知模板
    • 匹配任务执行结果关键字发送通知
  • 任务列表页显示任务下次执行时间

v1.4

  • HTTP任务支持POST请求
  • 后台手动停止运行中的shell任务
  • 任务执行失败重试间隔时间支持用户自定义
  • 修复API接口调用报403错误

v1.3

  • 支持多用户登录
  • 增加用户权限控制

v1.2.2

  • 用户登录页增加图形验证码
  • 支持从旧版本升级
  • 任务批量开启、关闭、删除
  • 调度器与任务节点支持HTTPS双向认证
  • 修复任务列表页总记录数显示错误

v1.1

  • 任务可同时在多个节点上运行
  • *nix平台默认禁止以root用户运行任务节点
  • 子任务命令中增加预定义占位符, 子任务可根据主任务运行结果执行相应操作
  • 删除守护进程模块
  • Web访问日志输出到终端

gocron's People

Contributors

aspirewit avatar chaiyd avatar eamonzhang avatar feiin avatar fromiuan avatar ouqiang avatar zhangqiusheng avatar zhmin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gocron's Issues

邮箱的smtp地址怎么配置

使用的阿里云邮箱 , smtp.mxhichina.com 25 80 587 还有smtp.*.com 都试过了 ,执行结束通知 无效,也没有报错日志。 脚本测试smtp是正常的。

API

是否有API接口详细说明。需要传的参数。

机器可以进行分组

有个场景就是我登录之后只想知道我所在组的机器,不想看到其他业务的组的机器列表,现在是登录之后只要gocron-node添加到系统了,所有人都能看到,感觉这块可以再细分一下

gocron

账户计划做权限吗?分为只读和可操作就可以了

建议增加 sqlite 数据库

建议增加 sqlite 数据库,这样可以进一步提升安装体验,减少运维难度,毕竟有些情况下单机并没有 mysql。

gocron是否支持非root账号的定时任务?

看了一大圈任务调度,发现大神这个最轻量,很是喜欢。
刚安装了下,发现在添加节点的时候,发现没有可以填写用户的功能。
我们生产环境有很多是非root跑的业务,比如publish跑的程序, 我们的任务计划都是加到publish账号下。

不知道gocron是否能支持非root账号执行任务?我是这样想的:
如果一个服务器需要普通账号定时任务,那么就用普通账号身份去启动gocron-node??
不过有的服务器既有root任务,又有普通账号任务,可能实现起来比较啰嗦。。
不知道后续gocron是否能支持指定账号身份,比如我都用root身份运行node,但是我可以指定这个node1以其他身份执行即可,期待大神的回复~~

多用户

@ouqiang 多用户功能开始了么,如果能加入多用户就完美了

建议功能以及现有的解决方案

我有一个业务需求如下:

  • 有一个任务,每分钟执行一次,失败重试 2 次
  • 任务失败,提示用户 (邮件),并终止任务运行

现有的功能实现方案:

  • 当任务最终失败,调用 URL 通知
  • URL接收端调用 API 终止任务,URL接收端提示用户 (发邮件)
  • 用户处理过后,API 调用开启任务

现有的功能具体方案:

  • PHP 接收 Slack 通知并提取数据
  • PHP 根据提取的数据进行分析

建议的功能:

  • 建议增加 URL POST 推送任务执行结果
  • 建议增加任务执行结果多端推送
  • 建议增加任务执行失败后(重试失败后)终止任务

好想学一下 Go 语言呀,现在我有大量的服务器运维软件都是 Go 语言写的。

rpc error

rpc error: code = ResourceExhausted desc = grpc: trying to send message larger than max (40254453 vs. 4194304)
主机: [localhost-127.0.0.1]
rpc error: code = ResourceExhausted desc = grpc: trying to send message larger than max (40254453 vs. 4194304)

再次讨教下,我的爬虫任务执行一段时间就这个样子 搞不清楚什么问题,刚部署的时候还是ok的

停止执行时间很长的任务,,

第一个问题

如果一个任务执行时间比较长,比如一个爬虫程序。启动后,发现无法手动停止本次任务。。

第二个问题

java -jar xxx.jar的一个任务,我看执行日志是“执行中”,但本地用jps检查,并没有Java进程存在。


任务执行节点的问题

大神你好!每个任务只能在一个节点上执行不能同时在多节点上执行是个问题啊!有没有考虑一个任务可以在多个节点上执行啊?

代码服务器部署问题

请教一下我使用二进制文件布置到阿里云的linux服务器上 使用外网+端口 不能访问,是为什么?

执行任务BUG

问题一:超时
页面提示: <label>任务超时时间(秒, 0-86400)</label>
但是添加代码控制如下

if taskModel.Timeout > 300 {
	return json.CommonFailure("HTTP任务超时时间不能超过300秒")
}

执行代码控制如下:

func (h *HTTPHandler) Run(taskModel models.Task) (result string, err error) {
	if taskModel.Timeout <= 0 || taskModel.Timeout > HttpExecTimeout {
		taskModel.Timeout = HttpExecTimeout
	}

首先不统一,定时任务肯定是一些长时间运行的离线任务。这个时间对于某些应用来讲太短。

问题二:
任务执行异常,每次重试间隔时间,每次递增1分钟,会不会这个时间太长。给一个时间递增算法(1 + 2^N),或者给出一个设置方式最好。

严重的 BUG:html/template: "install/create" is undefined

当我在根目录执行:/path/gocron/gocron web
提示:html/template: "install/create" is undefined
版本:V1.4

注:/path 是我的程序目录

应该是程序跟路径定义产生的问题,我原本以问是权限问题,结果发现并不是。

HI,大神你好.

@ouqiang 大神你好, 请问大神有没有开发计划. 一个定时开始时间和结束时间. 可以控制,要不定时任务开始了,就一定要人为的去关闭.

image

延迟执行任务

大神你好: 我想在30分钟之后执行任务应该怎么写?只执行一次.

邮件通知无法发送

配置均正确,任务执行后就是不能正常发送邮件,请问需要安装说明依赖服务么

命令输出转换编码失败(gbk to utf8)

我认为这里处理不太好 我用windows,go编译的二进制输出的应该不是gbk 转换失败 转换失败之后是不是应该保持原样,不然不知道输出的是什么 或者不转

API 仍然报 403

版本 gocron-v1.3-windows-amd64.zip

无论配置

api.sign.enable = false

H:\X\tool>curl -i -X "POST" 127.0.0.1:5920/api/v1/task/disable/3
HTTP/1.1 403 Forbidden
Set-Cookie: MacaronSession=4fbdcf8be1b5e725; Path=/; HttpOnly
Date: Mon, 25 Dec 2017 14:54:59 GMT
Content-Length: 0
Content-Type: text/plain; charset=utf-8

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.