Threads y concurrencia

Antonio Beamud Montero antonio.beamud en linkend.net
Jue Ago 2 11:09:48 CEST 2007


El jue, 02-08-2007 a las 09:10 +0200, Jose Gomez-Dans escribió:
> Hola,
> Tengo un programa que descarga ficheros de un FTP y los procesa. Los
> ficheros son grandes (cientos de MB, tardan varios minutos en bajar),
> y el procesado es bastante pesado. Como no es crítico tener los datos
> procesados en tiempo real, he decidido meter el procesado en un hilo,
> para que se vaya haciendo de fondo mientras me sigo bajando datos por
> otro lado. Hay algo que no funciona, porque el servidor FTP me da
> timeouts, y el procesado no es concurrente, sino que secuencial.
> 
> La clase hilo es muy sencilla:
> class MyThread ( threading.Thread):
>     def __init__ ( self, opciones):
>     	self.opciones = opciones
>     	threading.Thread.__init__ ( self )
>     def run ( self ):
>     	#Procesar cosas blah blah blah
> 
> La lógica del programa principal viene siendo un bucle en el servidor
> FTP remoto. Para cada fichero que se va a descargar, éste se descarga,
> se lanza el hilo del procesado una vez lo hemos descargado, y vuelta a
> empezar.

Yo creo que tu problema viene por la conexión de control que se abre
contra el servidor ftp, si la descarga es muy grande suele dar timeouts,
ya que durante ese periodo de descarga no recibe información de
control. 

¿Que servidor FTP usas? ¿Usas la libreria ftputil de python?

P.D.: Otra idea sería usar un modelo asincrono en vez de por hilos. Mira
twisted (http://twistedmatrix.com/trac/)

Un saludo.



------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


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