2020/04/27 05-result接口实现和WEB端开发实现

之前对整个任务的下发,到master的指派,调度,到agent的执行,执行完结果也拿到了。
master下的message中拿到消息,调它的store

在这里插入图片描述
master的message负责暴露接口
在这里插入图片描述
发过来的执行的结果最后要存储起来

结果也就是这个四样
在这里插入图片描述
在找个store,就完成了对数据的存取
在这里插入图片描述
所以在storage,需要加个result,这样result就能把数据存进去了
在这里插入图片描述
领任务的时候,把自己的状态变成running了,交换的时候就要变成wait,这里只能把自己的状态修改,因为做完了,才有资格去要任务

在这里插入图片描述
这里可能有点问题,这里又变成waiting了,不能说明任务做还是没做过
在这里插入图片描述
所以要打开下面这个
在这里插入图片描述

在这里插入图片描述
你提交了还不能算任务成功,还要判断任务的失败率来判断才行
在这里插入图片描述
最后改自己的状态又可以接任务了

在这里插入图片描述
这个判断不严格,需要改掉

在这里插入图片描述
下面写成字典,访问方便,也可以写成字典在这里插入图片描述
这样数据存储过来,就可以把状态改变 了
在这里插入图片描述
从web端提交任务过来,提交到master,由master把任务保存起来,然后agent来领取任务,就可以拿回去了,执行完,调用别人的result,把结果记录下来,这里全都可以改成 操作数据库,也就是storage可以实现对数据库的存取
在这里插入图片描述
master包和agent包有了,差web包

在这里插入图片描述
在这里插入图片描述
webserver随便用什么写,因为传输的就是http,所以只要把server实现

在这里插入图片描述
需要把找个库装一下

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
server都是类似的,start,shutdown
在这里插入图片描述
照抄这一段

在这里插入图片描述
这里就是在做映射
在这里插入图片描述
网页里应该把所有能用的agent拿回来,加个self.app
在这里插入图片描述
要写一个handler
在这里插入图片描述
改一下handler名字,url可以自己定,resultful,方法+url,在url中加数据,不用查询字符串,这就是resultful最基本的样子
在这里插入图片描述
只要访问/agent/list,就会异步调用下面的方法,去拿数据,然后response返回
在这里插入图片描述
需要去问zerorpc要数据,只有master才能作为socket通信的server
在这里插入图片描述
现在当用户请求,只要访问这个接口,就是来请求agent列表的,agent列表跟request无关,以后请求列表里也是带分页,一般情况下,最好带分组,而不是分页,jquery里就由插件,树形结构就可以加点,然后加载出来,刚好使用到jquery的异步加载的能力,jquery,ajax。
如果用react,antdesign就由树形组件,树形组件一定会告诉你异步加载

在这里插入图片描述
可以测试一下,if name ==‘main,可以不写在这里在这里插入图片描述
现在假设链接成功,写个appweb来测试
在这里插入图片描述
web起来之前先把server起来,但是现在先起web,看看能不能用
在这里插入图片描述
启动appweb
在这里插入图片描述
在这里插入图片描述

用postman测试一下,拿回来了,web是成功的
在这里插入图片描述
json里有对象,data是要的数据
在这里插入图片描述
data是调用jason的dump,dump变成json字符串来返回,拿到之后包装text,把原来的text替换,response出去
在这里插入图片描述
这里就放个字典

在这里插入图片描述
启动一下,再次访问,这样就成了
在这里插入图片描述
现在想要所有的agents,还有派发任务的东西,master先启动,agent第二个启动,过来之后将自己的id放在这里,然后发一个agents请求,把这些所有的agent的id,发给web,我们就可以使用了
在这里插入图片描述
下面就是调用这个
在这里插入图片描述
master的都到message里来,要暴露给client端口,调用这个值,return出去,这里返回其实不应该是列表list,而是字典,最后返回的应该是xxxxid:hostname这样的,便于前端最后显示
在这里插入图片描述
这个agents方法目前没有

在这里插入图片描述
storage目前没有这个方法,需要写一个,造一个字典,values都是agent对象
在这里插入图片描述

webserver调用,就拿到了这个字典
xt_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyMjI3ODE4,size_16,color_FFFFFF,t_70)
这里改正一下id
在这里插入图片描述

启动server

在这里插入图片描述
一次启动

在这里插入图片描述
这样就发过来了

在这里插入图片描述
把web完善下

在这里插入图片描述
修改完了启动一下

在这里插入图片描述
这样就拿到数据了

在这里插入图片描述
这是id,用户看到的是主机名,以后就可以给这个id下发任务
在这里插入图片描述

准备写post方法,提交任务,这个id只有一个,也就是把任务派给你
在这里插入图片描述
post方法也是通过浏览器发的,浏览器最后发给web

在这里插入图片描述
这个web里要添加一句,向task发,应该有handle
在这里插入图片描述
加一个任务早就在master/message里写了,add_task

在这里插入图片描述
add_task里要给一个所谓的字典,值都要写到storage里的add_task里
在这里插入图片描述
现在能给三项,script,timeout,targets,剩下全可以缺省值
在这里插入图片描述
先不调用,先把json返回一下
在这里插入图片描述
重启web
在这里插入图片描述
启动一下,调用task_hanle方法,然后return
在这里插入图片描述
send一下

在这里插入图片描述
coroutine就不能这么做

在这里插入图片描述
试试用await

在这里插入图片描述
重启web

在这里插入图片描述
在这里插入图片描述

coroutine这个对象,要用await来等,做异步的时候要切一下,这样就拿到值了
在这里插入图片描述
j是一个字典,所以要加await,异步的时候要这么用

在这里插入图片描述
async是异步,遇到coroutine,要写await(以前是yield from改成了await),只要后面coroutine,就await,拿到j就直接是字典了
在这里插入图片描述
提交一个任务,任务指派要看agent是否空闲,空闲来领任务,就会去执行,执行完了就会输出
在这里插入图片描述
agent执行,是调用executor,执行完会打印信息,用logger.INFO打
在这里插入图片描述
这三个启动一下

在这里插入图片描述
这里追踪下日志

在这里插入图片描述
send一下

在这里插入图片描述
成功
在这里插入图片描述
现在全部暴露的是接口,返回全是json,又可以做到前后端分离,不会写前端可以找jquery’
jquery script,src juquery.js,,$.就开始了

现在前后打通,主要业务已经完成了
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
aiohttp用的人挺多的
在这里插入图片描述
常用的东西就是application做路由
在这里插入图片描述

只不过定义的时候需要async来定义,如果打印的数据类型是coroutine,异步的时候讲要用yield from,也有原生关键字await
在这里插入图片描述
如果要看任务详细,就配个路由,/task/1,然后配一个handle
在这里插入图片描述
所有的web开发都是一样,通过url或者模式,都最后要映射到函数上,web开发就是一个request,一个response
在这里插入图片描述
这是mscheduler,是做任务调度分派的,用主动推的就要写调度器了,比较麻烦,拉比较简单,谁空闲谁来拉。
中间如何通信,写几层,每一个包内如何分模块,分类。
还有数据选择什么类型,多查询就还是用字典,遍历还是用列表,什么类型都可以,大量用序列化和反序列化,只不过被包装起来msgpack实现,更多来解决接口问题

rpc框架最重要就是接口,两端接口,两端解析数据要用到的类,要一样,zerorpc,封装了更多,使用更简单,用了内建数据结构,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值