cknit

高可用定时多任务管理工具
授权协议 BSD
开发语言 C/C++
所属分类 程序开发、 作业/任务调度
软件类型 开源软件
地区 国产
投 递 者 阎嘉荣
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

cknit

cknit 是一款开源高可用定时多任务管理工具,定时精度为秒级别,能够确保高效、稳定的处理多任务。 定时精度随任务量的变化如下所示 ( 测试平台OSX ):

任务数量 定时精度偏差
1000 0.01s
100000 1s

支持平台

目前支持 Linuxmac 两大平台,mac 平台使用 select 系统调用,Linux平台使用 Posix (timer),因此 Linux 平台性能比 mac 平台稍高,任务调度精度更佳

时间间隔格式

标准格式:

* * * * * * *

含义 取值范围
1 0-60
2 0-59
3 0-23
4 1-31
5 0-11 0:表示一月
6 0-6 0: 表示周日

设计架构

cknit

安装

**cknit **采用 cmake 编译系统,因此需要目标机器安装 cmake 3.13 及以上版本

1、下载源码

git clone https://gitee.com/josinli/cknit.git

2、编译

mkdir build
cd build
cmake ..
make && make install
cknit

APIs管理

安装完成后,访问:

http://127.0.0.1:9898

响应如下:

{
    "message": "Welcome use cknit",
    "code": "ok",
    "version": "1.0",
    "port": 9898,
    "APIs": [
        {
            "name": "Get all monitors tasks",
            "method": "GET",
            "protocol": "HTTP/1.1",
            "url": "http://127.0.0.1:9898/monitors"
        },
        {
            "name": "Add one monitors tasks",
            "method": "POST",
            "protocol": "HTTP/1.1",
            "url": "http://localhost:9898/monitors"
        },
        {
            "name": "Modify one monitors tasks",
            "method": "PUT",
            "protocol": "HTTP/1.1",
            "url": "http://localhost:9898/monitors"
        }
    ]
}

API: 获取当前所有的任务

GET http://127.0.0.1:9898/monitors

响应回答如下:

[
    {
        "command": "php ~/Desktop/index.php",
        "period": "* 1,2,3,10-20 * * * *",
        "id": 1,
        "status": 0
    },
    {
        "command": "php ~/Desktop/index.phpd",
        "period": "* * * * * * */2"
    }
]

API: 在线添加任务

POST http://127.0.0.1:9898/monitors
{
	"command": "php ~/Desktop/index.php",
	"period": "* * * * * * */2"
}

响应回答如下:

{
    "message": "Success",
    "code": "true",
    "operation": "Add task"
}

API: 在线修改已存任务(id是系统自动分配的)

PUT http://127.0.0.1:9898/monitors
{
	"id": 998,
	"data": {
		"status":0,
		"period": "* * * 11 * */2",
	}
}

响应回答如下:

{
    "message": "Success",
    "code": "true",
    "operation": "Modify task"
}
 相关资料
  • Gulp与Grunt一样,也是一个自动任务运行器。它充分借鉴了Unix操作系统的管道(pipe)思想,很多人认为,在操作上,它要比Grunt简单。 安装 gulpfile.js gulp模块的方法 src() dest() task() watch() gulp-load-plugins模块 gulp-livereload模块 参考链接 安装 Gulp需要全局安装,然后再在项目的开发目录中安装为本

  • 安装 命令脚本文件Gruntfile.js Gruntfile.js实例:grunt-contrib-cssmin模块 常用模块设置 grunt-contrib-jshint grunt-contrib-concat grunt-contrib-uglify grunt-contrib-copy grunt-contrib-watch 其他模块 参考链接 在Javascript的开发过程中,经常会

  • 每个新创建的任务都是 org.gradle.api.DefaultTask 类型, org.gradle.api.Task 的标准实现,DefaultTask 所有的域都是私有的,意味着他们只能通过 setter 和 getter 方法来访问,庆幸的是Groovy提供了一些语法糖来允许你通过名字来使用域。 管理项目的版本 许多公司或者开源组织有他们自己的发布版本的措施,一般用主版本号和次版本号来表

  • 用 ceph-deploy 建立一个集群后,你可以把客户端管理密钥和 Ceph 配置文件发给其他管理员,以便让他用 ceph 命令管理集群。 创建一管理主机 要允许一主机以管理员权限执行 Ceph 命令,用 admin 命令: ceph-deploy admin {host-name [host-name]...} 分发配置文件 要把改过的配置文件分发给集群内各主机,可用 config push

  • 在San CLI中主要通过san serve和san build命令进行生产和开发环境的打包,San的脚手架工程内置了四个命令,包括启动本地服务、生产环境打包、打包分析、现代模式打包等,脚手架工程的package.json内可执行的命令有: npm run start // 打包+启动本地服务 npm run build // 打包发布 npm run analyzer // 打包分析 npm r

  • 任务管理(又称 构建)工具 任务管理/构建 工具: Gulp Grunt Tasking/build and more tools: Brunch Mimosa

  • 使用map()和一个基本的线程池 # futures_thread_pool_map.py from concurrent import futures import threading import time def task(n): print('{}: sleeping {}'.format( threading.current_thread().name,

  • 主要内容:Eclipse 任务管理,打开任务视图,使用任务视图Eclipse 任务管理 程序员喜欢在他们的代码中放置 TODO 标记,作为需要完成的任务的提醒。Java 代码中包含 TODO 一词的注释被识别为任务并显示在标记栏和任务视图中。 通过右键单击标记栏并选择添加任务,可以使用 Eclipse 编辑器将任务与正在编辑的文件相关联。在出现的对话框中输入任务描述并从优先级下拉列表中选择一个优先级,然后单击确定按钮。 要使用 Eclipse 编辑器移除任务