• Publicidad

Duda con try-tiny

Aquí encontrarás todo lo que sea específicamente acerca de módulos de Perl. Ya sea que estás compartiendo tu módulo, un manual o simplemente tienes una duda acerca de alguno.

Duda con try-tiny

Notapor danimera » 2012-10-10 07:04 @336

Tengo un código que uso el try-catch

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. if ( $sospechoso ne "SI" && $id_interesado ) {
  2.     try {
  3.         $self->add_log( 'info', "Se ejecuto el envío del formulario a un interesado id: " . $id_interesado );
  4.         $self->envio_link_form_to_interesado( $id_interesado, $datosC->{'operacion'} );
  5.  
  6.         # die 2558;
  7.  
  8.     }
  9.     catch {
  10.  
  11.         #Si hay falla notificamos el warnigs
  12.         %data = ( estado => 3, );
  13.  
  14.         my ( $stmt, @bind ) = $sql->update( 'configuracion_spider', \%data, 'id_conf = ' . $q->param('id_conf') );
  15.         $sth = $dbh->prepare($stmt);
  16.         $sth->execute(@bind) or $self->add_log( 'error', "" . $dbh->errstr() );
  17.  
  18.         $self->notificar( "Notificacion(3004):Error  en Envio form intesados " . $q->param('id_conf'), $_ );
  19.  
  20.         $self->add_log( 'warning', "Error en Envio form intesados " . $q->param('id_conf') . " falla: $_ " );
  21.  
  22.         #die "Error en envio form interesados en Spider ".$q->param('id_conf');
  23.  
  24.     };
  25. }
  26.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Pero resulta que ayer lo ejecuté, y esa notificación me envía un correo, y noté que desde ayer a hoy no para de enviarme correos notificándome falla en la función envio_link_form_to_interesado().

Lo que no entiendo es, por qué rayos si yo ya modifiqué el script siguen llegándome notificaciones. Yo no sé si se quedó ejecutando eternamente una instancia de un viejo compilado del mismo script, pero me llegan a cada rato notificaciones a mi correo con un mensaje que ya no existe en código, un mensaje que hace rato elimine y aún así sigue, llegando, como si se hubiera quedado ejecutando un script viejo, y me tocara reiniciar el servidor...

No comprendo el manejo de ese try-catch, yo solo quería que mi script no muriera si encontrará un error, pero ahora veo que es peor la cosa.
Última edición por explorer el 2012-10-10 07:45 @364, editado 2 veces en total
Razón: Formateado de código con Perltidy
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: Duda con try-tiny

Notapor explorer » 2012-10-10 08:05 @379

Recuerda que, cuando se envía un correo, éste queda en un servidor de correo, esperando a entregarlo al siguiente servidor de correo (donde está el destinatario).

Puede ocurrir que no pueda entregar el correo (porque la dirección esté mal, no hay conexión, el servidor de correo no admite conexión no autenticada, hay que esperar unos minutos para demostrar que no somos spam, etc., etc.). En ese caso, envía un correo de aviso al emisor del correo, e intentará intentará enviar el correo cada 5 m. Si al cabo de unas horas no lo puede enviar, enviará otro correo de aviso. Y si pasados unos días, no puede hacerlo, devolverá el correo al emisor.

Si no confías en el try-catch, sustitúyelo por el típico die(), para ver qué error es el que provoca el fallo. Y luego lo restableces, pero haciendo que el catch{} solo informe de qué error ocurre (como lo hace el die()). Cuando estés seguro de qué error es, pues vas agregando más líneas.

No dejes de visitar la lista de errores de este módulo, por si alguno coincide con lo que te pasa.

Hay otro módulo: TryCatch.
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: Duda con try-tiny

Notapor danimera » 2012-10-10 08:26 @393

Hummm, entonces, por lo que veo... podría decir que los correos quedaron en cola...
Los errores yo los conozco porque hice la función y pues sé cómo funciona...

Lo que no entendía era el porqué inclusive hace 20 minutos me llegó otro correo. Mi miedo es que eso me quede en ejecución continua o igual son miles de correo que me queden en cola y me mate el servidor... y creo que lo mejor será reiniciar el servidor...
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: Duda con try-tiny

Notapor explorer » 2012-10-10 09:53 @454

No sé decirte porque no nos dices cómo arrancas el programa.

En los sistemas hay bastantes pistas para saber qué está haciendo la máquina.

En Linux, por ejemplo, tienes el comando mailq para saber qué mensajes están aguardando en la cola.

Y los registros de actividad (log) van informando de lo que va pasando. Yo suelo tener una terminal en el que ejecuto el comando

tail -F /var/log/mail.log /var/log/exim4/mainlog |ccze

para ver la actividad del correo, en tiempo real (el comando ccze es un script en Perl que colorea registros log).

Y no necesitas reiniciar nada, eso es cosa del siglo pasado. Si necesitas reiniciar el servicio de correo, pues se reinicia solo ese servicio:

/etc/init.d/exim4 restart

(yo uso exim4 como gestor de correo)
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: Duda con try-tiny

Notapor danimera » 2012-10-10 11:57 @539

Muchas gracias, explorer...
Como siempre buena ayuda y aprendiendo más...
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


Volver a Módulos

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 3 invitados

cron