python开发his系统_一种低成本的基于Python3的HIS负载均衡研究

本文介绍了使用Python3开发低成本HIS负载均衡的研究,客户端通过Socket与服务器通信,下载配置文件并校验。服务器端利用SocketServer模块实现多线程处理并发请求,确保数据完整性和可靠性。
摘要由CSDN通过智能技术生成

图3 客户端随机逻辑

客户端下载配置文件流程

客户端配置文件下载,并非直接的文件传输,而是服务器读取服务器存储的txt文件后传输文件内的数据,客户端将接收到的数据写入本地文件,以此来还原文件。

(1)建立Socket连接之前需要导入socket库:

import socket

(2)建立Socket连接:

s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.connect(HOST, PORT)

(3)通过向服务器发送特定的命令获取文件:

client_command = 'get ecplist_in_server.txt'

s.send(client_command.encode())

(4)从服务器接收数据并校验保存

data = s.recv(4096).decode()

为防止频繁读写硬盘,校验本地文件和服务器文件的版本号,若不同,则写文件

if data[3].strip('\n') != IPname:

f.write(data)

(5)数据校验并转移存储

本地的ecplist_in_server.txt和ecplist.txt对比,数据传输校验标识相同则表示数据完整可靠并且版本号不一致的情况下才更新本地ecplist.txt,满足如下条件:

IPnamefromserver.strip('\n')=="18661801660" and IPnamefromserver != IPname

服务器端功能简述

SocketServer是Python3标准库中一个高级别的模块,用于简化网络客户与服务器的实现。服务器端的实现主要使用Python3的SocketServer模块实现网络服务器功能,并利用其多线程技术解决服务器并发请求。

网络服务器的实现

首先要定义一个继承自基类BaseRequestHandler的处理程序类,然后BaseRequestHandler的实例MyRequestHandler可以实现以下方法。

(1)MyRequestHandler. setup()

在handle()之前进调用此方法进行初始化操作,提示进入处理线程。

(2)MyRequestHandler. handle()

收到客户端发出的get请求,读取文件并发送数据。

while True:

try:

data = self.request.recv(4096).decode()

print("get data:", data)

if not data:

print("break the connection!")

break

else:

action, filename = data.split()

if action == 'get':

self.sendfile(filename)

else:

print("get error!")

continue

except socket.timeout:

print ("caught socket.timeout exception")

(3)MyRequestHandler. finish()

完后handle()方法后调用此方法执行清除操作。

并发服务器的实现

host,port = '192.168.108.39’,8080

(2)实现了多线程的socket通话

server=socketserver.ThreadingTCPServer((host,port),Server)

(3)当一个客户端结束后继续运行,与其他的客户端继续进行通话

server.serve_forever()

客户端和服务器端的运行效果分别如下:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值