python socketserver监听多端口多进程
2024-10-16 12:48:20
多进程监听多端口
# 多线程socket
# 程序监听两个端口,端口逻辑相同其中一个端口放在子进程下
# 每次请求会在产生一个进程处理请求
import SocketServer
from multiprocessing import Process
class MyServer(SocketServer.BaseRequestHandler):
def handle(self):
conn=self.request
conn.sendall('hello')
while True:
data=str(conn.recv(1024))
conn.sendall('server:'+data)
if __name__ == '__main__':
server1=SocketServer.ForkingTCPServer(('127.0.0.1',8000),MyServer)
server1.max_children=2
server2 = SocketServer.ForkingTCPServer(('127.0.0.1', 9000), MyServer)
server2.max_children = 2
p=Process(target=server2.serve_forever,args=())
p.start()
# server1需放在p.start后启动不然会阻塞进程,server2无法启动
server1.serve_forever()
p.join()
# print 'hah'
多线程把ForkingTCPServer换成ThreadingTCPServer去掉max_children配置即可
注:
坑! 若使用多线程,因为无法配置线程数,并发太高会导致服务器产生很多进程也许会达到服务器显示的单个用户最多进程数,从而导致异常(linux 默认普通用户限制1024)
client
import socket
ip=('127.0.0.1',8000)
sk=socket.socket()
sk.connect(ip)
sk.settimeout(10)
while True:
data=sk.recv(1024)
print('receive: %s',data)
inp=raw_input('please input:')
sk.sendall(bytes(inp))
if inp == 'exit':
break
sk.close()
最新文章
- 站内全文检索服务来了,Xungle提供免费全文检索服务
- 对于amqplib的使用心得
- python3-day4-python函数
- ssh(sturts2_spring_hibernate) 框架搭建之struts2
- POJ 2002 Squares
- cmd命令进行RSA 密钥加密操作
- 记一次高级java工程师职位的面试
- python学习第五天 List和tuple类型介绍及其List切片
- android调用系统自带的的浏览器搜索关键字
- Oracle11g R2学习系列 之一安装篇
- jQuery关于mouseover和mouseenter的区别
- 自学Python2.1-基本数据类型-字符串str(object)
- 存储库-MongoDB简单的操作
- Spring Boot 2.0(五):Docker Compose + Spring Boot + Nginx + Mysql 实践
- typescript + echarts-for-react 制作渐变柱状图, 提示[ts] 类型“Graphic”上不存在属性“LinearGradient”
- .net core 2.x - docker(for windows)-linux配置及项目+SqlServer发布
- Spring Boot: remove jsessionid from url
- 【error】'isnan' was not declared in this scope
- Java从零开始学十(Arrays类对数组的常用方法)
- Linux学习---新建文件,查看文件,修改权限,删除