领导都夸的开源数据可视化工具~~~

6bc533894358a33b7b97f2d8ab673921.jpeg

文 | ssw

来源:Python 技术「ID: pythonall」

35f777b265613cdb84ab13d0087b05b8.jpeg

echarts官网有很多好看的图例,怎么结合起来放到自己的项目中呢?比如这种酷酷的首页:

934dace0e0c6165003a3b18d24bc715a.png

这种看起来美观又大方,自己要是能用上就好了。

其实这是可以的,echarts上有现成的图例和示例代码,咱们只要改改数据源就可以了,至于好看的布局,比如上图这种,我们直接借鉴过来不就可以了🐎。

以公司网页为例,简单介绍一个例子,下图这么多网址的巡检如何用一个图例来展示。

21a4e605c33746aff152310b72782e4d.png

可以把它们写到文件里:

先创建一个文件,比如叫config.cfg

[url]
优酷 = http://www.youku.com/
错误网址 = http://www.111.cn/

安装configparser模块

pip install configparser

读取这些网址

import configparser
cfg = configparser.ConfigParser()
cfg.read('config.cfg',encoding='utf-8')
urls = cfg.items('url')
print(urls)

结果如下:

[('优酷', 'http://www.youku.com/'), ('错误网址', 'http://www.111.cn/')]

echarts官网找图

接下来,怎么展示网站的状态码是否为200呢?

echarts上找了一下,看到一个“极坐标柱状图”,很适合这种判断True or False的场景,

e0039be04a5a361c88fd05394e9ec015.png

比如网页状态码是否为200,是返回1,否返回0,然后将echarts的数据源替换成我们的就是这种效果:

9f34e1411407c5a28518a5264feb9e9c.png

数值为1(代表正常)的条目会显示蓝条,0为异常则用红色文字打印出来,整体巡检效果如下:

59b927fa1523681815e416c3c1933179.gif

检查url

requests模块判断状态码是否为200

import requests
def check_url(url):
    try:
        r = requests.get(url, timeout=10)
        return r.status_code
    except Exception as e:
        return e

config.cfg读到的网址,利用check_url函数检查完放到一个列表中

urls_state = []
for url in urls:
    status_code = check_url(url[1])
    if status_code == 200:
        urls_state.append([0,1])
    else:
        urls_state.append([1, 1,url[0]+' ConnectTimeout'])

结果如下:

[
 [0, 1],
 [1, 1, '优酷 ConnectTimeout'],
 [0, 1],
 [1, 1, '错误网址 ConnectTimeout']
]

把这些信息返回给前端

from rest_framework.views import APIView

class get_urls(APIView):
    def get(request,*args,**kwargs):
        urlsState = check_url.main()

        #网页的名字列表
        cities = ['公司主页', 'maas', 'maas1', 'maas2', 'maas3', 'maas4', '1小猫咪', '2小猫咪', '3小猫咪', '4小猫咪', '5小猫咪', '6小猫咪', '7小猫咪', '8小猫咪', '9小猫咪','10小猫咪','11小猫咪','12小猫咪', 'maas4','maas5', 'maas6','maas7', 'maas8', 'maas9', 'maas10', 'maas11','maas15', 'maas13', 'maas14', 'maas', '数据可视化系统', 'maas', 'maas', 'x1', 'maas','maas']
        return JsonResponse({'data': {
            'urlsData':{'name':'网页','urlsState':urlsState,'cities':cities},
        }})

这样前端在判断的时候,如果某个url信息的长度为3,说明有错误信息

urlsState.forEach(key => {
    if (key.length == 3) {
    this.echartData.urls.info.push(key[2] + '\n')
    }
})

小结

这是一个很好的例子:

  • 前后端分离

  • 动态更新echarts数据

  • 用到DjangoRESTframework

更重要的是通过合并第1、2步,从检查到展示能一步到位,领导见了直夸有想法。

本文是由 Python技术 公众号粉丝ssw 投稿,欢迎大家继续踊跃投稿!

PS:公号内回复「Python」即可进入Python 新手学习交流群,一起 100 天计划!

老规矩,酱友们还记得么,右下角的 “在看” 点一下,如果感觉文章内容不错的话,记得分享朋友圈让更多的人知道!

fff26023e8bf33cd1a64ed5c72108c77.gif

神秘礼包获取方式

识别文末二维码,回复:1024

cdaaa77a67be889486d7b924a521a4f3.png

d9403fc635592fba59e39ca3602c92de.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值