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