[Python-es] Despertar a "select"
Pepe Aracil
pepe en diselpro.com
Jue Mar 11 09:51:40 CET 2010
Hola lista.
Estoy diseñando un servidor TCP que tendrá que atender cientos de
conexiones simultáneas.
La idea es que un thread se encargue de ejecutar un select (módulo
select) pasándole como único parámetro la lista de sockets abiertos a la
espera de datos entrantes.
Hasta aquí todo está claro, el problema viene cuando desde otro thread
quiero añadir nuevos sockets a la lista de sockets que le paso al
select. Necesito despertar al select para que recargue la nueva lista.
No quiero hacerlo por timeout ya que es una forma bastante ineficiente,
ya que si pusiese un timeout de 5 seg. la siguiente lectura de el nuevo
socket se demoraría un máximo de 5 seg. y
si pongo un timeout muy bajo, estoy echando ciclos de cpu a la basura.
Se me ha ocurrido añadir a la lista del select un socket udp con el
único fin de actuar como "despertador" . ¿Alguien tiene una idea mejor?
Gracias.
Más información sobre la lista de distribución Python-es