Skip to content

zzlpeter/aps

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

项目结构

conf                    配置文件目录(需要配合 Dockerfile 里面 APP_ENV 变量)         
    local                   本地开发环境
        common.toml             通用配置
        logger.toml             日志文件配置
        mysql.toml              数据库配置
        redis.toml              Redis配置
    test                    测试环境
    online                  线上环境
libs                    库函数
    aps                     apscheduler - 不可修改
    decorators              装饰器
    logger                  日志
    mysql                   MySQL链接池
    redis                   Redis链接池
    requests                request orm
    tomlread                解析toml配置文件
    utils                   其他库函数
        datekit                 时间相关
        notice                  报警相关
        other                   其他
models                  models orm
tasks                   任务相关
    cron                    定时任务(标准cron格式)
    date                    定点任务
    interval                周期任务
Dockerfile              
main.py                 程序入口
requirements.txt

项目启动流程

1、修改配置
    环境变量分为 local/test/online 默认为local
    修改conf/local/logger.toml配置文件、日志文件为绝对路径
    修改conf/local/mysql.toml配置文件
2、执行SQL
    -- 创建task表
    CREATE TABLE `task`  (
      `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增',
      `task_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '任务唯一标识',
      `desc` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '任务信息描述',
      `execute_func` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '任务执行的方法',
      `trigger` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '调度方式(cron/date/interval)',
      `spec` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '调度时间',
      `args` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '执行方法的args参数',
      `is_valid` int(11) NOT NULL COMMENT '是否有效',
      `status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '执行状态(ready/doing)',
      `extra` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '{}' COMMENT '额外信息',
      `create_at` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
      `update_at` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间',
      PRIMARY KEY (`id`) USING BTREE,
      UNIQUE INDEX `ux__task__task_key_status`(`task_key`, `status`) USING BTREE COMMENT 'task_key/status唯一索引'
    ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 ROW_FORMAT = Dynamic;

    -- task表测试数据
    BEGIN;
    INSERT INTO `task` VALUES (1, 'test_interval', '测试interval任务', 'test_interval', 'interval', '5', '1,2,3', 1, 'ready', '{}', '2020-04-24 16:51:03', '2020-04-24 19:13:59');
    INSERT INTO `task` VALUES (2, 'test_date', '测试date任务', 'test_date', 'date', '2020-04-24 18:08:00', '\"guess\",\"hello\"', 0, 'ready', '{}', '2020-04-24 16:51:03', '2020-04-24 18:08:03');
    INSERT INTO `task` VALUES (3, 'test_cron', '测试cron任务', 'test_cron', 'cron', '* * * * *', '4,5,6', 0, 'ready', '{}', '2020-04-24 16:51:03', '2020-04-24 18:46:15');
    COMMIT;
    
    -- 创建execute_task任务执行表
    CREATE TABLE `execute_task`  (
      `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增',
      `task_id` int(11) NOT NULL COMMENT '任务ID',
      `status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '执行状态',
      `extra` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '{}' COMMENT '额外信息',
      `trace_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '任务执行trace-ID',
      `create_at` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
      `update_at` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间',
      PRIMARY KEY (`id`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 ROW_FORMAT = Dynamic;
3、启动
    python main.py

特殊说明

1、运行中的任务, 只允许修改 `is_valid`, `spec`; 其他信息修改之后框架不会识别
   `is_valid` 控制任务启停 (最多延迟10s生效)
   `spec` 控制任务调度时间(最多延迟10s生效)
2、tasks 目录下面定义的任务, 接受参数说明
   async def test_cron(task_key, *args, **kwargs):
       pass
   `task_key`: task表里定义的唯一标识
   `*args`: task表里定义的args参数
   `**kwargs`: {'sub_task_id': 当前执行子任务的主键, '__unique_trace_id__': 当前执行任务的trace-ID}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published