From: Leandro Lucarella Date: Thu, 10 Mar 2005 03:05:33 +0000 (+0000) Subject: Se agrega un chequeo a sc_deliver para que no finalice la entrega hasta que no X-Git-Tag: svn_import~56 X-Git-Url: https://git.llucax.com/software/sercom-old.git/commitdiff_plain/196cbb9fc2731b208965d8f775769d4d07ec4988 Se agrega un chequeo a sc_deliver para que no finalice la entrega hasta que no se termine de compilar todos sus intentos. Ya no es más necesario especular con darle un tiempo extra. --- diff --git a/debian/README.Debian b/debian/README.Debian index 3770ed0..93f6358 100644 --- a/debian/README.Debian +++ b/debian/README.Debian @@ -14,10 +14,7 @@ respectivamente. El programa sc_deliver, encargado de cerrar una entrega y tomar el último intento exitoso como entrega final a corregir, corre todos los días a las -23:30hs, puede modificarlo en el archivo /etc/cron.d/sercom. -Puede ser necesario modificarlo si el corrector es muy lento compilando y no -llega terminar de compilar las cosas que, normalmente, se terminan de entregar a -las 20:00hs. +20:30hs, puede modificarlo en el archivo /etc/cron.d/sercom. Tambien puede cambiar la frecuencia de rotación de logs en /etc/logrotate.d/sercom. diff --git a/debian/sercom.cron.d b/debian/sercom.cron.d index 9b5e7c7..0a53392 100644 --- a/debian/sercom.cron.d +++ b/debian/sercom.cron.d @@ -2,4 +2,4 @@ # Ejecuta sc_deliver todos los días después a las 23:30hs # m h dom mon dow user command -30 23 * * * sercom /usr/sbin/sc_deliver +30 20 * * * sercom /usr/sbin/sc_deliver diff --git a/src/sc_deliver b/src/sc_deliver index 6377f00..3979a86 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 @@ -39,8 +41,13 @@ 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): + while 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, diff --git a/src/sercom/sqlo.py b/src/sercom/sqlo.py index de2347c..0c0b59d 100644 --- a/src/sercom/sqlo.py +++ b/src/sercom/sqlo.py @@ -155,6 +155,14 @@ class Intento(BaseSQLObject): except IndexError: return None + @classmethod + def faltaCompilar(cls, entrega, connection=None): + no_compilados = cls.selectBy(entregaID=entrega.id, compila=None, + connection=connection).count() + no_probados = cls.selectBy(entregaID=entrega.id, compila=True, + finPruebas=None, connection=connection).count() + return no_compilados + no_probados + def _get_path(self): curso = self.inscripto.curso entrega = self.entrega