clientsToListen = [] # Verify each 0.05 (max) sec, if a connected client is enabled to read (he sent a msg) try: clientsToListen, wList, xList = select.select( connectedClients, [], [], 0.05) except select.error: pass else: # Get clientSocket which have sent a msg one by one for clientSocket in clientsToListen: recvMsg = clientSocket.recv(1024) recvMsg = recvMsg.decode() if recvMsg == "close": clientSocket.close() clientsToListen.remove(clientSocket) connectedClients.remove(clientSocket) print("One client disconnected") else: print("server.py -> receive a msg") processor.peel(recvMsg) processor.execute(clientSocket) except IndexError: mainSocket.close() finally: mainSocket.close() print("Server close") for clientSocket in connectedClients: clientSocket.close() mainSocket.close()