SocketServer

Hernan Martinez Foffani hernan en orgmf.com.ar
Lun Jul 22 15:32:33 CEST 2002


> > ¿ya viste Lib/test/test_socketserver.py ?
>
> Jo. Tengo el demonio servidor funcionando (siguiendo lo poco que
> he encontrado en la web de python) y lo que he hecho no tiene
> pero que nada que ver con lo que hay en ese fichero.

bueno... nada que ver, supongo que no. ;-)

> A lo que voy es que, por ejemplo, si quiero saber la IP de un
> cliente tengo
> que empezar a buscar como un loco para encontrar frases sueltas y
> deducir que
> hay algo que se llama "client_address" para luego probar un
> "self.client_address" y ver que sale un tupla, array o como se llame.
>
> Después hago "self.client_address[0]" y tengo la IP. Ok.
>
> ¿Que más hay? ¿Como lo sé? ¿Donde están los ejemplos? ¿Donde están los
> consejos?
>
> Te dice, si quieres servir conexiones, después de implementar la clase
> servidora utiliza server.serve_forever(). Pero eso solo sirve una
> conexión y
> hasta que no se cierra no sirve otra. Si quieres puedes multihebrarlo
> utilizando nosequéclase que no aparece por ninguna parte ni se
> dice como se
> usa.
>
> Luego en una web en Japonés he encontrado un trozo de código en el que lo
> hacen con TreadingTCPServer. Pues vale. Pues menos mal.
>
> Ahora me gustaría saber como limitar el número de hebras, o saber cuantas
> tengo... Imposible. Estoy seguro de que eso está contemplado,
> pero no lo pone por ninguna parte.

el ThreadingTCPServer es un Mixin entre ThreadingMixin y TCPServer. el
codigo del primero es muy sencillito:

class ThreadingTCPServer(ThreadingMixIn, TCPServer): pass

para controlar las creaciones de los hilos podrías trabajar
sobre el mixin y agregarle las condiciones que necesites.


> También me gustaría bindar el servidor a varios interfaces. Pues
> nada, los
> colegas documentadores del python te dicen que hay un método que es
> server_bind(). Ni parámetros, ni cuantos puedes poner, ni ná de
> ná. ¿Que a probar ocho veces a ver si doy?

¿estás usando el help() de python?

>>> import SocketServer
>>> help(SocketServer.TCPServer.server_bind)
Help on method server_bind in module SocketServer:

server_bind(self) unbound SocketServer.TCPServer method
    Called by constructor to bind the socket.

    May be overridden.

>>>

> Y así todo el rato.
>
> No me quejo de python ni nada de eso. Sólo digo que con tamaño
> despropósito de documentación no es posible trabajar a no ser
> que se sea un auténtico experto en python o sólo se deseen
> hacer cosas muy simples, sin casi bucear en los módulos.

pues no.  tendrás que bucear en los modulos.  y no hay nada de
malo en ello.  (usa el help)


> Por tanto pregunto:
>
> ¿Hay algún sitio en el que haya sources de python a manta? ¿Estoy quizá
> enfocando mal el asúnto y debería de mirar cosas que no he mirado?

¿hiciste busquedas en groups.google.com ?
veo que hay varios hilos de conversación con ejemplos

(si estás en entorno windows puedes bajarte el Python Shelf de
http://www.orgmf.com.ar/condor/pytstuff.html )


saludos,
-Hernan








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