• Publicidad

Ejecutar un script que ya está en ejecución

Así que programas sin strict y las expresiones regulares son otro modo de hablar. Aquí encontrarás respuestas de nivel avanzado, no recomendable para los débiles de corazón.

Ejecutar un script que ya está en ejecución

Notapor danimera » 2011-09-11 11:56 @539

Mi pregunta es por que tengo un script que tiene que consultar vía API web, más de setenta mil registros...

Éste hace unos procesos a base de datos, etc, etc...

Pero mi script tarda 3 horas aproximadamente en arrojarme el resultado por cada siete mil registros...

Mi pregunta es... ¿Podré ejecutar ese script de nuevo si no ha terminado el primer bloque de siete mil registros para leer los nuevos registros?

La idea es que el admin programara cada cierto tiempo que el script busque X registros por medio de la API cada cierto tiempo.

No sé cómo podría disminuir el tiempo tampoco; usando el WWW::Mechanize ya optimicé lo que más pude...
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Publicidad

Re: Ejecutar un script que ya está en ejecución

Notapor explorer » 2011-09-11 13:17 @595

danimera escribiste:Mi pregunta es por que tengo un script que tiene que consultar vía API web, más de setenta mil registros...

Éste hace unos procesos a base de datos, etc, etc...

Pero mi script tarda 3 horas aproximadamente en arrojarme el resultado por cada siete mil registros...
No sé cómo lees esos siete mil registros, ni el procesamiento que realizas con ellos, pero a mi parece excesivo ese tiempo de tres horas... ¿Los pides uno a uno? ¿No se pueden pedir en bloques?

danimera escribiste:Mi pregunta es... ¿Podré ejecutar ese script de nuevo si no ha terminado el primer bloque de siete mil registros para leer los nuevos registros?
Yo creo que sí, siempre y cuando la segunda ejecución tenga presente que puede estar existiendo una ejecución anterior. Quiero decir: el programa puede realizar todas las operaciones que quiera, siempre y cuando sus cálculos no se refieran a información que todavía no ha sido almacenada o procesada por la ejecución anterior (que aún no ha terminado). Si, en cambio, con los nuevos siete mil registros, necesito realizar alguna operación que tenga en cuenta que los anteriores siete mil registros han sido almacenados o procesados, pues no puedo hacerlo, porque no lo están.

danimera escribiste:No sé cómo podría disminuir el tiempo tampoco; usando el WWW::Mechanize ya optimicé lo que más pude...
Si el cuello de botella no es tu programa, entonces será del servidor que te da la información... Sin más detalles, poco más se puede decir :(
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Ejecutar un script que ya está en ejecución

Notapor danimera » 2011-09-11 14:21 @640

No sé cómo lees esos siete mil registros, ni el procesamiento que realizas con ellos, pero a mi parece excesivo ese tiempo de tres horas... ¿Los pides uno a uno? ¿No se pueden pedir en bloques?


Es un foreach() de un listado de Links; leo el link con el Mechanize, obtengo un código, se lo paso al API que me regresa un JSON que guardo en una tabla; el ciclo recorre más o menos siete mil links...

Yo creo que sí, siempre y cuando la segunda ejecución tenga presente que puede estar existiendo una ejecución anterior. Quiero decir: el programa puede realizar todas las operaciones que quiera, siempre y cuando sus cálculos no se refieran a información que todavía no ha sido almacenada o procesada por la ejecución anterior (que aún no ha terminado). Si, en cambio, con los nuevos siete mil registros, necesito realizar alguna operación que tenga en cuenta que los anteriores siete mil registros han sido almacenados o procesados, pues no puedo hacerlo, porque no lo están.


Solo recogerá información y la guardará. La pregunta radica en que este script ejecutará una búsqueda de la información según la configuración del admin. Ejemplo: buscar registro con un valor mayor a tal número, buscar registros de tal localidad, etc... Y como se ejecutará desde un cron, es posible que se ejecute el script y luego otro pero el anterior no habrá finalizado... son como 20 de estos que se ejecutarán en X horario.

Si el cuello de botella no es tu programa, entonces será del servidor que te da la información... Sin más detalles, poco más se puede decir


Debido a que es un webservice creo, bueno, un API para cada ciclo; él recoge la información, imagino que es lo mismo que hacerlo con un navegador, es algo como leer https://api.pagina.com/items/ID:500... La idea general es como un webspider o crawler, digamos.
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Re: Ejecutar un script que ya está en ejecución

Notapor explorer » 2011-09-11 20:21 @889

Entonces, la respuesta es sí.

;)
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Avanzado

¿Quién está conectado?

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