1

I have a python script that receives tcp data from client and I want to send a response to a specific client (I handle more than 500). This command comes from a mysql database and I handle the clientsocket by a dictionary, but the script is down when it receives a lot of connections.

How can I store the clientsocket in mysql database, or which is the best way to handle the clientsocket?

My code is:

import thread
from socket import *

def sendCommand():
    try:
        for clientsocket,id_client in conn_dict.iteritems():
            if id_cliente == "TEST_from_mysql_db":
                clientsocket.send("ACK SEND")
                break
    except:
        print "NO"

def handler(clientsocket, clientaddr):
    print "Accepted connection from: ", clientaddr
    while 1:
        data = clientsocket.recv(buf)
        if not data:
            break
        else:
            conn_dict[clientsocket] = id_client
            sendCommand()
    clientsocket.close()

if __name__ == "__main__":

    conn_dict = dict()
    host = str("XXX.XXX.XXX.XXX")
    port = XXX
    buf = 1024

    addr = (host, port)
    serversocket = socket(AF_INET, SOCK_STREAM)
    serversocket.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
    serversocket.bind(addr)
    serversocket.listen(2)

    while 1:
        print "Server is listening for connections\n"
        clientsocket, clientaddr = serversocket.accept()
        thread.start_new_thread(handler, (clientsocket, clientaddr))
    serversocket.close()
user3071284
  • 6,955
  • 6
  • 43
  • 57

0 Answers0