python websocket库 安装_python 的 websocket的使用

一:websocket使用场景

https://django-websocket-redis.readthedocs.io/en/latest/running.html

最典型的使用场景:聊天。

还有就是:当我们做异步处理的任务的时候,之前采用的长轮询或者计时器的方法,但是这种方法的开销和性能比较差。对于网页的性能的不是很好。

而html5的时候 支持websocket和python 本身也支持websocket,由于websocket的特性和开销更小,性能更好。所以采用websocket方式。接下来的django中,会开发一个叫做channels。这种方式更为不错。

今天介绍websocket。至于websocket的好处,网上的介绍一大堆,可以自己百度看,不做累述。

二  使用:

简单介绍下代码:前端通过jquery的$() 来采集页面的IP信息,然后通过html5的websocket跟后端python通信,后端通过传过的IP信息,建立ansible任务,执行对应的采集脚本,隔几秒返回给前端,

前端将结果替换到相应的页面,来更新前端的监控信息。

1、python 安装websocket:

1 pip2.7 install dwebsocket

前端代码:

1 if(window.s) {2 window.s.close()3 }4 /*创建socket连接*/

5 var socket = new WebSocket("ws://192.168.31.206:1601/get_monitor/");6 socket.onopen =function () {7 console.log('WebSocket open');//成功连接上Websocket

8 socket.send(msg)9 };10 socket.onmessage =function (e) {11 data=JSON.parse(e.data);12 console.log('message:' + e.data);//打印出服务端返回过来的数据

13 $.each(data['success_ip'],14 function(key,val){15 $( 'td:contains('+key+')').siblings().find('.cpu_val').text(val[0]);16 $( 'td:contains('+key+')').siblings().find('.io_val').text(val[2]+'m');17 $( 'td:contains('+key+')').siblings().find('.disk_val').text(val[1]+'%');18 }19

20 )21 };22 //Call onopen directly if socket is already open

23 if (socket.readyState ==WebSocket.OPEN) socket.onopen();24 window.s =socket;25

26

27 }

后端代码:

1 @accept_websocket2 def get_monitor(request):#getmonior infomation func.3 import time4 ifrequest.is_websocket():5 whileTrue:6 ifrequest.websocket.has_messages():7 msg=request.websocket.read()8 ip,task_id=msg.split(':')9 ip_list=[]10 ip_list.append(ip)11 print ip_list,task_id12 host_obj=models.Host.objects.filter(task_id=task_id).first()13 user=host_obj.sys_user14 pwd=host_obj.sys_pwd15 whileTrue:16 time.sleep(2)17 task_obj=task_excu.Task_Runner(ip_list, user, pwd)18 ret=task_obj.get_monitor()19 for i,v in ret['success_ip'].items():20 v=v.split('\n')21 ret['success_ip'][i]=v22 request.websocket.send(json.dumps(ret))23 else:24 time.sleep(1)25 continue

注释:

通过装饰器:@accept_websocket来让view函数的即可以接受http协议也可以接收wss 协议及websocket。

通过while死循环来,不断等待接收前端发送的消息和发送消息。

通过time模块来控制循环速度。

前端通过websocket 给后端发送消息和接收消息。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值