• Publicidad

Código de respuesta

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Re: Código de respuesta

Notapor explorer » 2011-03-13 16:48 @742

¿Es realmente necesario que todas las descargas se hagan de forma simultánea?

Quizás el esfuerzo invertido en el desarrollo de la programación no esté justificado, frente a otras opciones, como HTTP::Async.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Publicidad

Re: Código de respuesta

Notapor colorado » 2011-03-13 17:40 @778

Sí me gustaría hacer las descargas de forma simultanea.

Utilicé ForkManager, que es el módulo con el que había trabajado en otros proyectos.

HTTP::Async no lo conozco, empezaré a leer sobre él, y a buscar ejemplos que me puedan ayudar.

Gracias como siempre por la respuesta.
colorado
Perlero nuevo
Perlero nuevo
 
Mensajes: 73
Registrado: 2010-01-31 14:48 @658

Re: Código de respuesta

Notapor explorer » 2011-03-13 18:23 @808

Con HTTP::Async podrás bajar varios ficheros, pero solo podrás definir un proxy.

Con Coro y con subs::parallel se podría solventar, de forma sencilla, el tema de la simultaneidad, pero requiere más programación el control de los proxies disponibles.

Quizás con la técnica de los iteradores se podría solventar.

Hay un módulo llamado Parallel::Iterator que permite crear un iterador, de forma manual o automática, que es capaz de ejecutar varias tareas en paralelo, y recoger el resultado de cada iteración, porque ese es otro problema grave que tenemos aquí: no puedes lanzar la segunda tanda de peticiones hasta que las primeras se han terminado de procesar, para saber cuáles de ellas han fallado a causa de los proxies. Así que no hay una verdadera simultaneidad.

Curiosamente, en la documentación de Parallel::Iterator se utiliza como ejemplo la bajada simultánea de varios enlaces web.

El código que te he dado, no creo que funcione en ninguna solución paralela, porque usa estructuras (array) para llevar control de los URL que quedan y del funcionamiento de los proxy, y esa información no se transmite entre los distintos procesos.

Fíjate que en la propia descripción del problema hay algo que limita su uso paralelo: dices que si al pedir un fichero, no funciona con un determinado proxy, hay que descartarlo e intentarlo con otro. Si lo hacemos de forma paralela, podría darse el caso de que un proxy esté bajando más de un fichero a la vez.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Anterior

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 2 invitados

cron