X-Git-Url: https://git.llucax.com/software/sercom.git/blobdiff_plain/2344dcf6736372c1dd359a95819fb3c2e131afc2..refs/heads/master:/start-sercom.py?ds=inline diff --git a/start-sercom.py b/start-sercom.py old mode 100644 new mode 100755 index b32eb45..fd1c7e2 --- a/start-sercom.py +++ b/start-sercom.py @@ -1,4 +1,9 @@ #!/usr/bin/python +# vim: set et sw=4 sts=4 encoding=utf-8 foldmethod=marker : + +import locale +locale.setlocale(locale.LC_ALL, '') + import pkg_resources pkg_resources.require("TurboGears") @@ -13,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()) +