基于python的socketio通信

基于python的socketio通信,将获取的内容导入TDengine3.0数据库中

基于windows系统的环境准备

  1. pyaharm2022、anaconda(新建python版本为3.7.4的虚拟环境)
  2. 新建python版本为3.7.4的虚拟环境
// 新建环境
conda create -n py3.7.4 python=3.7.4
// 删除环境
conda remove -n  需要删除的环境名 --all
//进入环境
conda activate py3.7.4
//退出环境
conda deactivare

新建环境里的安装包列表新建环境里的安装包列表
3. 安装包下载

  • socketio所需安装包
// 未安装requests,会报错requests package is not installed -- cannot send HTTP requests!
pip install requests==2.28.1
pip install python-socketio==4.6.0
pip install python-engineio==3.14.2
pip install websocket==0.2.1
pip install websocket-client==0.57.0

注意

  1. 安装python-socketio==4.6.0时间,环境会同时安装python-socketio-4.6.0和python-engineio-4.3.4和six-1.16.0,因为python-engineio-4.3.4版本过高,会报错socketio.exceptions.ConnectionError: Unexpected response from server
  2. 未安装websocket-0.2.1、websocket-client-0.57.0会报错AttributeError: module ‘websocket’ has no attribute ‘WebSocketException’
  3. 只安装websocket-0.2.1,会报错AttributeError: module ‘websocket’ has no attribute ‘WebSocketException’
  4. 同时安装websocket-0.2.1、websocket-client-0.57.0,是为了触发服务端的自定义socketio事件
  • 操作TDengine所需安装包
pip install taospy==2.6.9

安装完上述的安装包列表
安装完上述的安装包列表

python的socketio客户端全部代码client01.py

import socketio
// import json 是为了处理从服务端接收的json数据
import json
import datetime
from taosrest import connect, TaosRestConnection, TaosRestCursor
sio = socketio.Client()
conn: TaosRestConnection = connect(url="http://192.168.1.104:6041",
                                   user="root",
                                   password="taosdata",
                                   timeout=30)
 // 系统内置的socketio事件connect、disconnect
@sio.on('connect')
def on_connect():
    print("client connect")

@sio.on('disconnect')
def on_disconnect():
    print('disconnected from server')

//服务端自定义的socketio事件statistics_packet

// 实时推送采集报文信息
@sio.on('statistics_packet')
def statistics_packet(data):
    temp = json.dumps(data)
    responsejson = json.loads(temp)
#********************** safe.statistics_packet *********************************
    #print(responsejson)
    # 已监测报文数量
    packetcount = responsejson.get("packetCount")
    # 已预警报文数量
    attackcount = responsejson.get("attackCount")
    # 每秒报文数量
    currentpacketcount = responsejson.get("currentPacketCount")
    # 监测资产数量
    devicecount = responsejson.get("deviceCount")
    # 预警资产(参与过攻击与被攻击的设备)数量
    attackeddevicecount = responsejson.get("attackedDeviceCount")
    # insert data
    cursor: TaosRestCursor = conn.cursor()
    now = datetime.datetime.now()
    cursor.execute("insert into safe.statistics_packet values ('%s', '%s', '%s', '%s', '%s', '%s')" % (now, packetcount, attackcount, currentpacketcount,devicecount,attackeddevicecount))
    return responsejson
// 客户端连接服务端
sio.connect('http://ip:port')
sio.emit("hello", {"data": "hello"})
print('client send hello success')

python代码从windows系统移植到centos7系统

  1. 创建⼀个独⽴的Python环境
    参考文章:创建⼀个独⽴的Python环境
  • virtualenv的安装
pip install virtualenv

⾸先系统中某个路径下创建⼀个⽂件夹,⽐如我创建了⼀个叫做venv的⽂件夹,⽐如我⽬前的路 径为 /test/venv,如果你是windows系统,那么你的路径⽐如说是 D:\envs 然后通过终端进⼊到这个⽂件夹⾥⾯,然后执⾏下⾯的指令

  • 创建虚拟环境
// 系统得有python3.7.4编译器,否则会报错,其余版本的python也是同理
virtualenv envsafe --python=python3.7.4
  • 使用虚拟环境
// linux或者mac
[root@node01 venv]# source /test/venv/envsafe/bin/activate
// windows
envsafe\Scripts\activate
  • 退出虚拟环境
// Windows (记不住单词没关系 按Tab键是可以⾃动补全的)
envsafe\Scripts\deactivate.bat
或者进⼊envsafe下⾯的Scripts⽂件夹下⾯,执⾏deactivate指令就可以了
// linux或者mac
任意⽬录下执⾏ deactivate指令

执⾏完上⾯的指令之后,在venv⽂件夹中会出现⼀个叫做envsafe 的⽂件夹,这个就是虚拟环境 所在的⽬录了,如果以后不想⽤这个虚拟环境了,直接删除这个myenv⽂件夹就⾏了,还可以创建多个 虚拟环境,起名字别冲突就可以了。
2. 剩下的安装步骤和windows类似

centos7后台挂起python脚本
nohup python /test/client01.py >/dev/null 2>/dev/null & 
centos7杀死python脚本进程
// 查找client01.py脚本的PID
ps -ef | grep client01.py
// 杀死python脚本的PID或者父PID
kill -9 108974

输入查找client01.py脚本的PID命令之后,如图所示
ps -ef | grep client01.py

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值