X-Git-Url: https://git.llucax.com/software/sercom-old.git/blobdiff_plain/3e70bed38777dfe39bffc9fd1a622fc66301ef40..7f32a60f31bd104bc04c102bf6c66dd2af7220e7:/src/sc_deliver?ds=sidebyside diff --git a/src/sc_deliver b/src/sc_deliver index 3b7abc4..cd4bc00 100755 --- a/src/sc_deliver +++ b/src/sc_deliver @@ -2,6 +2,8 @@ # -*- encoding: iso-8859-1 -*- # vim: set et sw=4 sts=4 : +# Módulos estándar +import time # Módulos locales import sercom import sercom.sqlo @@ -26,11 +28,19 @@ a su intento %d, recibido el %s. mail['To'] = inscripto.mail mail['Reply-To'] = conf.get('mail', 'admin') mail['Return-Path'] = conf.get('mail', 'admin') - mail['X-Mailer'] = 'sercom 0.3' + mail['X-Mailer'] = 'sercom ' + sercom.VERSION mail['X-Priority'] = '5' - smtp = smtplib.SMTP(conf.get('mail', 'smtp')) - smtp.sendmail(mail['From'], mail['To'], mail.as_string()) - smtp.close() + sent = False + while not sent: + try: + smtp = smtplib.SMTP(conf.get('mail', 'smtp')) + smtp.sendmail(mail['From'], mail['To'], mail.as_string()) + smtp.close() + sent = True + except smtplib.SMTPException, e: + log.warning('No se pudo enviar el mail a %s (%s)', + inscripto.padron, inscripto.mail) + time.sleep(1) # Inicializo conf, conn, log = sercom.init('deliver') @@ -39,8 +49,17 @@ log.info('Iniciado') # Utilizo el directorio de datos como base para todos los SQLObjects sercom.sqlo.dir_base = conf.get('general', 'data_dir') +# Atajo +intervalo = float(conf.get('general', 'intervalo')) + # Busco entregas pendientes for entrega in Entrega.getPendientes(conn): + log.debug('Hay una entrega pendiente: %d.%d.%d', entrega.curso.curso, + entrega.nroEjercicio, entrega.entrega) + while Intento.faltaCompilar(entrega, conn): + log.debug('Esperando que termine de compilar, faltan %d intentos', + Intento.faltaCompilar(entrega, conn)) + time.sleep(intervalo) log.info('Procesando entrega %d.%d.%d', entrega.curso.curso, entrega.nroEjercicio, entrega.entrega) for inscripto in Inscripto.selectBy(cursoID=entrega.cursoID, activo=True, @@ -70,3 +89,4 @@ for entrega in Entrega.getPendientes(conn): log.debug('Entrega finalizada') entrega.finalizada = True +log.info('Finalizado')