timeout en execute de mysqldb

Carles Pina i Estany carles en pina.cat
Sab Abr 21 01:21:41 CEST 2007


Hola,

Aunque hago cosas con Python no escribo mucho aquí. Pero tengo un
problema a ver si alguien me puede ayudar a resolverlo.

Conecto a una base de datos con el módulo MySQLdb. Necesito controlar
que el método execute tarde un tiempo "finito" (es decir, menos de 1 o 2
segundos) ya que la red puede caer, etc.

He probado a hacer algo como:
--------
signal.signal(signal.SIGALRM,handler)
signal.alarm(1)
cursor.execute(sql)
signal.alarm(0)
--------

esta idea funciona con time.sleep(5), pero con el cursor.execute(sql) no
funciona (es posible que se desactiven las señales en el execute?)

Cual es la mejor manera de hacerlo? Se me ocurre hacerlo con threads,
pero si lo pudiera evitar sería mucho mejor.

Alguna idea?

Con Perl, para hacer lo mismo, tuve que hacer un "apaño" porqué en el
execute se desactivaban las señales, pero pude hacerlo sin threads y
bastante fácil. Cual es la mejor forma en Python?

Gracias!

-- 
Carles Pina i Estany		GPG id: 0x8CBDAE64
	http://pinux.info	Manresa - Barcelona




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