Tornado开发硬件监测sys

作者: zz77zz | 来源:发表于2019-02-19 20:17 被阅读2次

努力坚持做到日更

2019/02/19 12:08
Python开发我来了哦😙😙😙😙😙

开发前准备

基本的http原理
  • websocket
    服务端和客户端之间的全双工通信协议
    ws 普通协议头
    wss 安全协议头
MTV架构
  • 下载数据库

  • 安装pycharm 找专业版的破解器破解

  • 安装下载的依赖包
    后端框架:tornado
    数据库连接驱动:mysql-connector-python
    数据库ORM:sqlalchemy
    websocket通信:sockjs-tornado
    获取系统硬件信息:psutil
    可视化图表分析:pyecharts
    pyecharts-snapshot
    pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com -r requirements.txt 指定国内镜像源哦 python牛皮👍👍👍👍👍
    -i 指定镜像源
    --trusted-host 指定信任主机
    -r 指定依赖文件

目前安装的包
  • 项目目录
文件 用途
manage.py 入口启动文件,负责启动服务
app 应用包 存放MTV
init.py 初始化模块,自定义应用,自定义服务
configs.py 配置信息(数据库 网站站点)
urls.py 配置路由规则
views 视图包(存放视图模块)
models 模型包(存放模型模块)
templates 模板目录(存放html模板)
static 静态文件目录(css、js、图片)
tools 工具包(图表、获取硬件信息、连接数据库)

obfuscate 使模糊


ORM模型设计

啥是ORM 啥是模型设计 这些对我而言全是问题 先放着 后面慢慢悟

设计统计模型

  • 创建文件 app/models/models.py
    这里可以查询一下包里的方法是怎么定义的 以及怎么用 api方便以后extend开发
    用sqlalchemy包里的方法创建各个字段 from sqlalchemy.dialects.mysql import BIGINT,DECIMAL,DATE,TIME,DATETIME
    分析字段:
    编号 id 大整型 主键
    使用率 percent 小数类型 允许为空
    总容量 total 小数类型 允许为空
    使用量 used 小数类型 允许为空
    剩余量 free 小数类型 允许为空
    创建日期 create_date 日期类型
    创建时间 create_time 时间类型
    创建日期时间 create_dt 日期时间类型

  • 模型生成数据表
    默认有安装数据库~~~ 没安装的可以查mysql是怎么安装的

    mysql安装成功
  • net start mysql80 启动mysql服务


    启动mysql
  • mysql -h主机 -u用户 -P端口 -p 连接mysql数据库


    数据库连接成功
  • 操作数据库
    show databases; 查看数据库
    create database monitor; 创建数据库
    use monitor; 切换到monitor库下面
    show tables; 查看数据表


    上述一系列操作
  • 模型生成数据表分析实现思路:
    1.导入数据库连接驱动
    2.创建连接引擎(配置mysql数据库连接信息)
    3.模型映射成数据表

代码如下

# -*- coding: utf-8 -*-
from sqlalchemy.ext.declarative import declarative_base  # 模型继承父类
from sqlalchemy.dialects.mysql import BIGINT, DECIMAL, DATE, TIME, DATETIME  # 导入字段
from sqlalchemy import Column  # 创建字段

Base = declarative_base()  # 调用
metadata = Base.metadata  # 创建元类
"""
1.导入模型继承父类
2.导入数据类型
3.导入创建字段的类
4.定义模型
"""


# 内存统计
class Mem(Base):
    __tablename__ = "mem"  # 指定表名称
    id = Column(BIGINT, primary_key=True)
    percent = Column(DECIMAL(6, 2))
    total = Column(DECIMAL(8, 2))
    used = Column(DECIMAL(8, 2))
    free = Column(DECIMAL(8, 2))
    create_date = Column(DATE)
    create_time = Column(TIME)
    create_dt = Column(DATETIME)


# 交换分区统计
class Swap(Base):
    __tablename__ = "swap"  # 指定表名称
    id = Column(BIGINT, primary_key=True)
    percent = Column(DECIMAL(6, 2))
    total = Column(DECIMAL(8, 2))
    used = Column(DECIMAL(8, 2))
    free = Column(DECIMAL(8, 2))
    create_date = Column(DATE)
    create_time = Column(TIME)
    create_dt = Column(DATETIME)


# CPU统计
class Cpu(Base):
    __tablename__ = "cpu"  # 指定表名称
    id = Column(BIGINT, primary_key=True)
    percent = Column(DECIMAL(6, 2))
    create_date = Column(DATE)
    create_time = Column(TIME)
    create_dt = Column(DATETIME)


if __name__ == "__main__":
    # 1.导入数据库连接驱动
    import mysql.connector
    # 2.导入创建引擎
    from sqlalchemy import create_engine

    # 配置一下连接信息
    mysql_configs = dict(
        db_host="127.0.0.1",  # 主机地址
        db_name="monitor",  # 数据库名称
        db_port=3306,  # 数据库端口
        db_user="root",  # 数据库用户
        db_pwd="root"  # 数据库密码
    )

    """
    连接格式:mysql+驱动名称://用户:密码@主机:端口/数据库名称
    """
    link = "mysql+mysqlconnector://{db_user}:{db_pwd}@{db_host}:{db_port}/{db_name}".format(
        **mysql_configs
    )

    # 创建连接引擎,encoding定义编码,echo是(True)否(False)输出日志
    engine = create_engine(link, encoding="utf-8", echo=True)

    # 映射
    metadata.create_all(engine)

success!

2019/02/19 20:25 回家回家😑😑😑😑😑 今日分割线


获取硬件信息

获取CPU信息

相关文章

网友评论

    本文标题:Tornado开发硬件监测sys

    本文链接:https://www.haomeiwen.com/subject/jfmxyqtx.html