Saludos estube buscando un codigo en python para abrir socket para recibir parametros de varios clientes a la vez y me dijeron que tengo que usar hilos en python estoy cero recien estoy empezando y encontre este codigo y lo adapte un poco a mis necesidades lo que hace este codigo es abrir un puerto y esperar clientes cuando un cliente se conecta acepta la coneccion y manda un hilo para que se ejecute aparte recibo los parametros y los grabo en postgres y cierro la conneccion y el socket.
bueno me gustaria saber si este codigo esta bien y la adaptacion osea que no me consuma mucha memoria ya que estamos viendo la situacion de conectar 200 clientes ah y cada cliente envia informacion cada 30 segundos :).
gracias
Código Python:
Ver original#! /usr/bin/env python
'''
Created on 20/02/2009
@author: Chuidiang
Ejemplo de socket en python. Un servidor que acepta clientes.
Si el cliente envia "hola", el servidor contesta "pues hola".
Si el cliente envia "adios", el servidor contesta "pues adios" y
cierra la conexion.
El servidor no acepta multiples clientes simultaneamente.
'''
import pg
import socket
from threading import Thread
#Clase con el hilo para atender a los clientes.
#En el constructor recibe el socket con el cliente y los datos del
#cliente para escribir por pantalla
class Cliente(Thread):
def __init__(self, socket_cliente, datos_cliente):
Thread.__init__(self)
self.socket = socket_cliente
self.datos = datos_cliente
# Bucle para atender al cliente.
def run(self):
# Bucle indefinido hasta que el cliente envie "adios"
seguir = True
while seguir:
# Espera por datos
peticion = self.socket.recv(1024)
usuario='postgresql'
clave='12345'
base='prueba'
conexion=pg.connect(dbname=base,user=usuario,passwd=clave)
consulta="select * from registra_trama_prueba1('"+peticion+"')"
respuesta=conexion.query(consulta)
conexion.close()
print peticion
self.socket.close()
print "desconectado "+str(self.datos)
seguir = False
if __name__ == '__main__':
# Se prepara el servidor
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(("", 9090))
server.listen(1)
print "Esperando clientes..."
# bucle para atender clientes
while 1:
# Se espera a un cliente
socket_cliente, datos_cliente = server.accept()
# Se escribe su informacion
print "conectado "+str(datos_cliente)
# Se crea la clase con el hilo y se arranca.
hilo = Cliente(socket_cliente, datos_cliente)
hilo.start()