import socket, selectors
# 获取相应操作系统最佳的selector
sel = selectors.DefaultSelector()
# 得知有请求进来时,接受请求
def accept(sock, mask):
conn, addr = sock.accept()
conn.setblocking(False)
sel.register(conn, selectors.EVENT_READ, read_handler)
# 得知有消息发送过来时,处理请求
def read_handler(conn, mask):
data = conn.recv(2048)
print('recv data: ' + str(data, 'utf-8') + str(mask))
conn.send(b'back: ' + data)
sel.unregister(conn)
conn.close()
# 启动服务器
def run_server(addr_info):
sock = socket.socket()
sock.bind(addr_info)
sock.listen(5)
sock.setblocking(False)
sel.register(sock, selectors.EVENT_READ, accept)
print('begin..')
while True:
events = sel.select()
for key, mask in events:
callback = key.data
callback(key.fileobj, mask)
if __name__ == '__main__':
addr_info = ('localhost', 1111)
run_server(addr_info)
单进程+单线程+异步IOLoop python 服务器 demo
最新推荐文章于 2025-05-07 22:47:39 发布