[pyar] Sockets: Pregunta "relampago"

Alejandro Santos listas en alejolp.com
Jue Oct 7 00:47:04 ART 2010


2010/10/6 Martin Cerdeira <martincerdeira en gmail.com>:
>
> Digamos, creía que no se quedaba esperando en cada uno de los recv.
> Pero claro, no es así como funcionan los sockets, por lo menos en
> python.
>
> Es evidente que le estoy errando, también sé en qué le estoy errando.
> La pregunta es, tengo que usar threads si o si? No safo, no?
>

Ya sea Python como en otros lenguajes, los sockets se pueden usar de
tres formas: bloqueantes, no bloqueantes, y asincrónicos. A su vez, si
queres manejar varios sockets tenes tres formas básicas de
controlarlos: un thread por socket, o usando mecanismos de
notificación por nivel y por flanco.

Eso te da un abanico interesante para combinarlo de la forma que más
te sirva. Si querés entender un poco más te recomiendo que leas la
página "C10k problem" [0] de Dan Kegel, ahi está todo esto re bien
explicado.

Sobre tu problema, en Python podés usar el módulo select [1], que te
da acceso a las system calls select() y poll(). Para pocos sockets (<
100) ambas son más que suficiente.

[0] http://www.kegel.com/c10k.html
[1] http://docs.python.org/library/select.html

-- 
Alejandro Santos
http://alejolp.com.ar



More information about the pyar mailing list