X-Git-Url: https://git.llucax.com/software/sercom.git/blobdiff_plain/d3e061fdd8ef6f06c309b63650d74486325bf6cd..afac27e3d0768062a91a065e4407130cabd84e4a:/start-sercom.py diff --git a/start-sercom.py b/start-sercom.py index cba53a1..fd1c7e2 100644 --- a/start-sercom.py +++ b/start-sercom.py @@ -1,4 +1,5 @@ #!/usr/bin/python +# vim: set et sw=4 sts=4 encoding=utf-8 foldmethod=marker : import locale locale.setlocale(locale.LC_ALL, '') @@ -17,13 +18,62 @@ import sys # look for setup.py in this directory. If it's not there, this script is # probably installed if len(sys.argv) > 1: - update_config(configfile=sys.argv[1], + update_config(configfile=sys.argv[1], modulename="sercom.config") elif exists(join(dirname(__file__), "setup.py")): update_config(configfile="dev.cfg",modulename="sercom.config") else: update_config(configfile="prod.cfg",modulename="sercom.config") +from sercom.model import InstanciaDeEntrega, Entrega, AND, hub +from sercom.finalizer import Finalizer +from threading import Thread +from datetime import datetime +import time +import logging + +log = logging.getLogger('sercom.tester') + +class Queue(object): #{{{ + def __init__(self): + self.go_on = True + def get(self): + while self.go_on: + try: + hub.begin() + try: + select = InstanciaDeEntrega.select(AND( + InstanciaDeEntrega.q.inicio_proceso == None, + InstanciaDeEntrega.q.fin <= datetime.now())) + instancia = select.orderBy(InstanciaDeEntrega.q.fin)[0] + n = Entrega.selectBy(instancia=instancia, fin=None).count() + if n: + log.debug(_(u'Esperando para procesar instancia (%s), ' + 'faltan probar %s entregas'), instancia.shortrepr(), + n) + time.sleep(30) + continue + instancia.inicio_proceso = datetime.now() + finally: + hub.commit() + return instancia.id + except IndexError: + log.debug(_(u'No hay instancias de entrega sin finalizar')) + time.sleep(30) # TODO config? + except Exception, e: + if isinstance(e, SystemExit): + raise + log.exception('Queue: ') + time.sleep(30) # TODO config? + return None +#}}} + +#q = Queue() +#finalizer = Finalizer(name='finalizer', queue=q) +#t = Thread(name='finalizer', target=finalizer.run) +#t.start() + from sercom.controllers import Root start_server(Root()) +