• Publicidad

Cómo correr partes de un script de forma automática

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

Cómo correr partes de un script de forma automática

Notapor Normando » 2011-03-27 01:04 @086

Hola amigos. Este es mi primer mensaje en el foro. Soy muy nuevo en Perl. Sin embargo, comprendo bastante bien el lenguaje, pero por falta de experiencia, a veces me veo en aprietos y no sé cuál es la mejor manera de hacer algo.

El problema que tengo es el siguiente, y no sé por dónde encararlo:

Tengo un script de perl corriendo en background, y cada x tiempo lee desde una base de datos unos valores, que consisten en una clave => valor.

Con estos datos tengo que crear un timer que me ejecute "clave" una vez vencido el tiempo de "valor", sin que me detenga la ejecución del script.

¿Me expresé bien? Es decir, el script en background obtiene cada x segundos varios pares 'clave' => 'valor', y con ellos necesito lanzar o algún script independiente o algo por separado, para que el script en background siga obteniendo esos pares sin detenerse a ejecutar el timer uno a uno.

La verdad, no me doy idea de cómo lo puedo llevar a cabo. Cualquier ayuda "apta para novatos" será más que bien recibida.

Felicitaciones por el sitio, un invaluable recurso para Perl en español.
Normando
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2011-03-27 00:49 @075

Publicidad

Re: Cómo correr partes de un script de forma automática

Notapor explorer » 2011-03-27 10:23 @474

Bienvenido a los foros de Perl en español, Normando.

Si el requerimiento es lanzar todos los programas sin esperar a que terminen, lo que yo haría sería crear un fork() y, mientras el proceso padre sigue procesando el resto de claves, el hijo se encargaría de ejecutar el programa que procesara la clave actual.

Por estos foros hemos comentado más de una vez el tema de la programación en paralelo, pero en este caso, no es más que repartir el trabajo entre el proceso padre y los procesos hijos que va creando.

También influye el sistema operativo en donde estés, naturalmente.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Cómo correr partes de un script de forma automática

Notapor Normando » 2011-03-27 11:41 @528

Gracias, explorer, por tan pronta respuesta.

Efectivamente es así. El SO es Linux (CentOS5).

A ver si me quedó claro: puedo ir lanzando procesos hijos que tengan un PID único en base a una cadena X que yo genere o construya, ¿y puedo obtener en el padre un retorno de error desde los hijos? Es decir, cuando finaliza, ¿me retorna 0 si funcionó todo correctamente o un 1 (u otro valor) si hubo algún problema?

Buscaré en el foro (además de ver la función fork() en Perl) para ver cómo armo esto.

Muchas gracias.
Normando
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2011-03-27 00:49 @075

Re: Cómo correr partes de un script de forma automática

Notapor explorer » 2011-03-27 12:04 @544

En principio, no hay comunicación entre el proceso padre e hijo (son dos procesos independientes).

Sí que hay formas de que el padre se entere del resultado de la ejecución de los hijos, pero para eso, primero debería esperar a terminar la ejecución de esos procesos, y nos has dicho que no, que quieres que el proceso padre no se pare.

Lo que pueden hacer los procesos hijos es, primero, ejecutar la tarea que se les pide, y si ocurre algún fallo, actualizar alguna base de datos o tomar las medidas necesarias para tratar ese fallo. Es decir: el padre solo se preocupa de ejecutar los hijos, mientras que son los hijos los verdaderos protagonistas del proceso.

Además, si el padre accede a una base de datos, dependiendo de cómo sea esa base de datos, los hijos podrán entrar a actualizar esa información o no (depende de la base de datos se bloquea en cada acceso, permite acceso simultáneo, etc. etc.)
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Re: Cómo correr partes de un script de forma automática

Notapor explorer » 2011-03-27 17:58 @790

perlthrtut está en tu propio ordenador... y en todos los ordenadores donde exista una distribución moderna de Perl... no es necesario enlazarlo, te basta con ejecutar perldoc perlthrtut :)
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Cómo correr partes de un script de forma automática

Notapor Normando » 2011-03-27 18:11 @799

explorer escribiste:perlthrtut está en tu propio ordenador... y en todos los ordenadores donde exista una distribución moderna de Perl... no es necesario enlazarlo, te basta con ejecutar perldoc perlthrtut :)


I am very very newbie :)
Normando
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2011-03-27 00:49 @075


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados