python concurrent socket

import socket
import selectors
import threading
import time
selector = selectors.DefaultSelector()

socket_server = socket.socket()
address_server = ('0.0.0.0',8080)
socket_server.bind(address_server)
socket_server.listen(1000)


def wokter(socket_ser):   # Multi-threaded socket 
    while True:
        massage = socket_ser.recv(1024)
        if massage:
            socket_ser.send(massage)
        else:
            socket_ser.close()

while True:
    socket_ser, address = socket_server.accept()
    socket_thre =threading.Thread(target=wokter, args=(socket_ser,))
    socket_thre.start()


def server_read(connect): #epoll的socket
    massage = connect.recv(1024)
    if massage:
        connect.send(massage)
    else:
        selector.unregister(connect)#Clear registration
        connect.close()

def accept(socket_server):
    socket_ser, address = socket_server.accept()
    socket_ser.setblocking(False)
    selector.register(socket_ser, selectors.EVENT_READ, server_read)#register event callback socket connection
selector.register(socket_server, selectors.EVENT_READ, accept)#register event callback socket object

while True:
    events = selector.select()#All callback objects
     for key,massk in events:
        callback = key.data
        sock = key.fileobj
        callback(sock)

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325250230&siteId=291194637