Python下Socket的并发
Python下自带的Socket的模块是阻塞型的,每次只能处理一个连接,给应用造成了极大的不便,幸好有Gevent这个基于 协程的网络库,来使默认的Socket支持并发。
代码如下:
#coding=utf-8
from gevent import monkey; monkey.patch_all() //猴子魔法[1]
import socket
import gevent
def server_req(conn):
while True:
data = conn.recv(1024) #等待传入数据
if not data:
conn.close() #关闭连接
break
print('recv:%s'%data)
conn.send(data) #发送数据
def server_mian(s_addr,s_port):
s = socket.socket()
s.bind((s_addr,s_port)) #绑定端口
s.listen(500) #最大连接数
while True:
cli,addr = s.accept() #等待一个客户
gevent.spawn(server_req,cli) #创建一个协程,将客户传入server_req函数
if __name__ == '__main__':
server_mian('0.0.0.0',3000)
[1]猴子魔法(Monkey Patch):https://www.gevent.org/api/gevent.monkey.html