Skip to content

一个简单的任务管控终端,允许从远程接收任务执行并反馈任务执行结果

Notifications You must be signed in to change notification settings

ssk-wh/task_manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

title tags categories abbrlink date
任务管控终端的代码实现
任务管控
C++
Qt
C++
78b93c1c
2023-09-04 14:01:09 -0700

任务管控终端,允许从远程接收任务执行并反馈任务执行结果,之前做过类似的项目,总结了一个小的例子

特性: 任务状态周期性上报机制,避免网络环境恶劣导致服务端无法获取任务执行情况 限制单个任务执行时长为2h 支持日志分类 支持导出历史任务执行状况,最多支持最近的1000个任务 支持通过DBus监听任务执行的实时状态

任务类型-TaskType

类型 取值 说明
Ping 1 检查客户端是否存活,收到后应直接以约定的方式响应服务端
Bash 2 命令的内容一般是bash语句
Settings 3 命令的内容和本地要执行的任务是提前有对应关系的
Strategy 4 策略型任务,一般是一系列任务的集合

任务结构-Task

字段 说明
type 任务类型,决定了如何执行task_command命令
id 唯一的身份ID,用于标识身份
name 任务名称,仅做标记使用
command 任务的具体命令

程序模块

模块 说明
Cache 负责任务状态缓存
Handler 执行任务
Dispatcher 任务的分发
Manager 整体的任务管理
Reporter 任务状态上传

任务状态上报时机: 1.单个任务执行结束时触发上报(无论执行成功还是失败均上报) 2.周期性10秒触发一次 3.程序启动后,加载历史任务,如果存在历史任务为已执行结束但状态未上报时触发

思路: 利用多线程,支持并发执行多条任务,任务的状态会实时同步到本地缓存,避免异常掉电、崩溃等情况导致的任务丢失问题。周期性的上传任务完成状态到服务端,针对网络环境不稳定情况也能很好的处理。且开了单独的线程(比执行任务的线程优先级要高)用于上传状态。

写这个的目的一是想把心中的任务管理写出来,二是以后万一用到了直接过来拷贝就好了。

TODO: 大批量任务瞬间到达,考虑将队列数据持久化到磁盘,内存队列有空时再加载进来 部分任务很可能需要root权限,考虑子母进程的方式分别实现root级别配置和用户级别的配置 可以作为系统配置同步工具,支持自动同步远程数据,并在本地执行,支持查询报错日志

源码地址:https://github.com/ssk-wh/task_manager/tree/master

About

一个简单的任务管控终端,允许从远程接收任务执行并反馈任务执行结果

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published