serve_forever

Oswaldo Hernández listas en soft-com.es
Jue Mayo 22 15:42:28 CEST 2008


Pepe Aracil escribió:
> Hola
> 
> Si te miras los fuentes del módulo Socketserver
> y en concreto de la clase BaseServer, veras esto:
> 
> -- code --
> def serve_forever(self):
>         """Handle one request at a time until doomsday."""
>         while 1:
>             self.handle_request()
> ------
> 
> Solo tienes que crear una clase derivada de TCPServer y
> sobreescribir el método server_forever.
> 
> ------ code --
> def serve_forever(self):
>         """Handle one request at a time until exit_flag."""
>         while not exit_flag:
>             self.handle_request()
> ------
> 
> 
> 

Asi es como lo tengo hecho, pero el problema es que no funciona hasta que hay una nueva peticion de 
conexión.

Como apaño ademas de establecer el flag tengo que crear un socket en el otro proceso y hacer una 
conexión al server, y entonces ya funciona lo del flag y termina.

Estos son los fragmentos del codigo real:

     def serve_forever(self):
         while 1:
             self.Log.debug("handle_request, %s" % self.FinalizarProceso)

             if self.FinalizarProceso:
                 break

             self.handle_request()

         self.Log.debug("serve_forever, finalizado")


En el proceso llamado para finalizar los threads:

         Server.socket.close()
         # esperar 2 segundos

         time.sleep(2)

         # abir conexion al socket para que pare
         s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
         try:
             s.connect(("localhost", 4069))
             s.send('Cierrate hijo de p...!')
             s.close()
         except:

             raise



-- 
*****************************************
Oswaldo Hernández
oswaldo (@) soft-com (.) es
*****************************************
PD:
Antes de imprimir este mensaje, asegúrese de que es necesario.
El medio ambiente está en nuestra mano.
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





Más información sobre la lista de distribución Python-es