ITPub博客

首页 > 数据库 > 数据库开发技术 > python plotly制作接口响应耗时的时间序列表(Time Series )

python plotly制作接口响应耗时的时间序列表(Time Series )

原创 数据库开发技术 作者:FunTester 时间:2019-10-21 10:12:45 0 删除 编辑

本人在做工作中,要对某一个接口的响应耗时进行一个长期的统计,由于之前的数据全都写在了数据库中,统计了半年多的数据。在学习了plotly的Time Series 时间序列图标之后,绘制了一张接口响应耗时的图标,分享代码,供大家参考。

下面是从数据库读取数据的java代码:

1 JSONObject data = new JSONObject();
2        ResultSet resultSet = MySqlTest.excuteQuerySql("SELECT DATE(create_time),AVG(elapsed_time) *1000 FROM request_record WHERE api_name in(\"/service/user/v3/login/mobile/v5\",\"/service/user/v3/login/mobile/v4\") GROUP BY DATE(create_time) ORDER BY DATE(create_time);");
3        while (resultSet.next()) {
4            String name = resultSet.getString(1);
5            double time = resultSet.getDouble(2);
6            data.put(name, time);
7        }
8        resultSet.close();
9        Save.saveJsonList(data, "apitime");

下面是读取文件的方法和生成表格的调用类的代码:

 1#!/usr/bin/python
2# coding=utf-8
3
4from first.date import DatePlot
5
6
7class Fission:
8    x = []
9    y = []
10    z = []
11
12    def __init__(self):
13        print "欢迎使用fission类!"
14
15    def getData(self, name):
16        size = 0;
17        with open("/Users/Vicky/Documents/workspace/api_test/long/" + name + ".log") as apidata:
18            for i in apidata:
19                data = i.split("\r\n")[0]
20                time = float(data)
21                if time > 2: continue
22                self.z.append(data)
23                size += 1;
24        length = size;
25        for i in range(length):
26            self.x.append(name + "线程")
27
28    def getDataMarkLine(self, name):
29        with open("/Users/Vicky/Documents/workspace/api_test_najm/long/" + name + ".log") as apidata:
30            for i in apidata:
31                data = i.split("\r\n")[0].split("|")
32                day = data[0]
33                time = float(data[1])
34                self.x.append(day)
35                self.y.append(time)
36        return [self.x, self.y]
37
38
39if __name__ == "__main__":
40    fission = Fission()
41    a = fission.getDataMarkLine("apitime")
42    DatePlot.MakePlot(a[0], a[1], "time")

下面是生成时间序列表的封装类(我保留了多条折现的方法以及注释了显示规定日期间隔数据的方法):

 1#!/usr/bin/python
2# coding=utf-8
3
4import plotly.graph_objs as drive
5import plotly.plotly
6
7
8class DatePlot:
9    def __init__(self):
10        print "时间表格!"
11
12    @staticmethod
13    def MakePlot(x, y, titile):
14        a = drive.Scatter(
15            x=x,
16            y=y,
17            name="SSSSS",
18            line=dict(color='#17BECF'),
19            opacity=1
20        )
21
22        b = drive.Scatter(
23            x=["2016-02-20", "2016-02-21", "2016-02-23"],
24            y=[28.04, 20, 33],
25            name="AAAAA",
26            line=dict(color='#7F7F7F'),
27            opacity=0.8
28        )
29
30        data = [a]
31
32        layout = dict(
33            title=titile,
34            # xaxis=dict(
35            #     range=['2018-07-01', '2018-07-20'])
36        )
37        fig = dict(data=data, layout=layout)
38        plotly.offline.plot(fig, filename=titile + ".html")

下面是效果图:

技术类文章精选

非技术文章精选

大咖风采


原文作者:FunTester;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2019-07-07

  • 博文量
    1037
  • 访问量
    420883