Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/05/2012, 20:58
mobius666
 
Fecha de Ingreso: diciembre-2008
Mensajes: 65
Antigüedad: 15 años, 11 meses
Puntos: 0
socket e hilos en python

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
  1. #! /usr/bin/env python
  2. '''
  3. Created on 20/02/2009
  4. @author: Chuidiang
  5.  
  6.  
  7. Ejemplo de socket en python. Un servidor que acepta clientes.
  8. Si el cliente envia "hola", el servidor contesta "pues hola".
  9. Si el cliente envia "adios", el servidor contesta "pues adios" y
  10. cierra la conexion.
  11. El servidor no acepta multiples clientes simultaneamente.
  12. '''
  13. import pg
  14. import socket
  15. from threading import Thread
  16.  
  17. #Clase con el hilo para atender a los clientes.
  18. #En el constructor recibe el socket con el cliente y los datos del
  19. #cliente para escribir por pantalla
  20. class Cliente(Thread):
  21.     def __init__(self, socket_cliente, datos_cliente):
  22.         Thread.__init__(self)
  23.         self.socket = socket_cliente
  24.         self.datos = datos_cliente
  25.  
  26.     # Bucle para atender al cliente.      
  27.     def run(self):
  28.       # Bucle indefinido hasta que el cliente envie "adios"
  29.       seguir = True
  30.       while seguir:
  31.          # Espera por datos
  32.          peticion = self.socket.recv(1024)
  33.          
  34.          usuario='postgresql'
  35.          clave='12345'
  36.          base='prueba'
  37.  
  38.          conexion=pg.connect(dbname=base,user=usuario,passwd=clave)
  39.          consulta="select * from registra_trama_prueba1('"+peticion+"')"
  40.  
  41.          respuesta=conexion.query(consulta)
  42.          conexion.close()
  43.          
  44.          print peticion
  45.          self.socket.close()
  46.          print "desconectado "+str(self.datos)
  47.          seguir = False
  48.              
  49.        
  50.  
  51.  
  52.  
  53. if __name__ == '__main__':
  54.    # Se prepara el servidor
  55.    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  56.    server.bind(("", 9090))
  57.    server.listen(1)
  58.    print "Esperando clientes..."
  59.    
  60.    # bucle para atender clientes
  61.    while 1:
  62.        
  63.       # Se espera a un cliente
  64.       socket_cliente, datos_cliente = server.accept()
  65.      
  66.       # Se escribe su informacion
  67.       print "conectado "+str(datos_cliente)
  68.      
  69.       # Se crea la clase con el hilo y se arranca.
  70.       hilo = Cliente(socket_cliente, datos_cliente)
  71.       hilo.start()

Última edición por razpeitia; 15/05/2012 a las 21:52