Giter Site home page Giter Site logo

aps's Introduction

项目结构

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}

aps's People

Contributors

zzlpeter avatar

Stargazers

 avatar

Watchers

James Cloos avatar  avatar

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.