Skip to content

Latest commit

 

History

History
110 lines (97 loc) · 3.96 KB

1.md

File metadata and controls

110 lines (97 loc) · 3.96 KB

统一任务管理

这一节真是等了好久才写,主要原因是任务是这个系统最重要的一环,我想更好的设计一下
但是先这样开始吧
之前都是在玩,现在真的要整点更重要的东西了
一个运维平台,就是处理操作各种资源,但是很多操作是非常耗时的
我们肯定不能接口调用后同步等待,这就需要有任务来处理
前面已经介绍过使用celery来执行任务了,但是在我们的工作中需要再封装一下自己的任务.
我们封装的任务是业务层面的任务,最后还是使用celery来执行
比如,之前我们有同步阿里云资源的操作,但是随着资源增加,同步必然会更慢,这就可以使用我们的任务.
再比如之后我们会有服务部署操作,整个服务部署流程可能会很长,所以一样要使用任务.

tag: 0.6.1

后端

以后任务会很多,所以我先把任务分类,便于之后管理
而分类我不想在代码中写死,所以弄一个model来管理分类
这里我把分类设计成两层,真正子级分类才对应实际的任务
比如:我有一个ECS类型任务,下面有同步ECS、创建ECS、删除ECS等等子任务
为了统一,我把任务需要的参数,统一打成json存入input_params字段,输出存入output_params字段
并且以后任务可能会有关联性,所以任务可以有子任务.
任务有的需要马上执行,有的可能需要指定时间执行,所以增加时间模式
有的任务是执行一次就完成了,有的任务可能需要定时的检查是否完成,所以把任务分成了标准任务和周期任务
目前设计还很不成熟(因为我也不知道要设计成什么样子,走一步算一步)

涉及文件及目录

scheduler/models.py
scheduler/controllers/berry_type.py
scheduler/apis/berry_type.py
scheduler/urls/berry_type.py
scheduler/controllers/berry.py
scheduler/tasks/berry.py
asset/ecs/controllers/ecs.py
asset/ecs/apis/ecs.py
asset/ecs/urls/ecs.py
data/sql/rurality.sql
rurality/settings.py

代码

scheduler/models.py:
两个model,一个任务类型,一个任务
任务类型: 分两级,原本其实不需要这个model就可以
我直接定义一些常量作为任务类型,但是后来想想还是建一个model吧,这样查询的时候好弄
任务:所有任务都先创建此记录,实现任务的统一管理
任务是根据任务类型的sign值来区分,在代码中其实还是写死了不同类型对应的任务方法

scheduler/controllers/berry_type.py
scheduler/apis/berry_type.py
scheduler/urls/berry_type.py

操作任务类型的接口

scheduler/controllers/berry.py
scheduler/tasks/berry.py

创建任务以及任务调度的方法

asset/ecs/controllers/ecs.py
asset/ecs/apis/ecs.py
asset/ecs/urls/ecs.py

以之前的同步阿里云ECS为例,演示如何创建任务

前端

涉及文件及目录

src/api/system/berry_type/url.js
src/api/system/berry_type/index.js
src/views/system/berry_type/index.vue
src/views/system/berry_type/detail.vue
src/views/system/berry_type/components/BaseInfo/index.vue
src/views/system/berry_type/components/ObjDialog/index.vue
src/views/system/berry_type/components/ChildrenList/index.vue
src/router/modules/system.js
src/api/asset/ecs/index.js
src/api/asset/ecs/url.js
src/views/asset/ecs/index.vue

代码

src/api/system/berry_type/url.js
src/api/system/berry_type/index.js
src/views/system/berry_type/index.vue
src/views/system/berry_type/detail.vue
src/views/system/berry_type/components/BaseInfo/index.vue
src/views/system/berry_type/components/ObjDialog/index.vue
src/views/system/berry_type/components/ChildrenList/index.vue
src/router/modules/system.js

操作任务类型相关界面

src/api/asset/ecs/index.js
src/api/asset/ecs/url.js
src/views/asset/ecs/index.vue

ECS管理界面增加同步按钮