runsdt.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. # -*- coding: utf-8 -*-
  2. """
  3. Modulo principal para ejecutar el modelo de subasta
  4. """
  5. import logging
  6. from logging.handlers import RotatingFileHandler
  7. import queue
  8. import shutil
  9. import sys
  10. from simsdt.model import ModeloSubasta
  11. from qhandler import QueueHandler
  12. # log_queue = queue.Queue()
  13. # qh = QueueHandler(log_queue)
  14. # formatter = logging.Formatter(
  15. # '%(asctime)s: %(message)s', datefmt='%Y-%m-%dT%H:%M:%S')
  16. # qh.setFormatter(formatter)
  17. fh = RotatingFileHandler(
  18. 'log/simsdt_run_monitor.log', maxBytes=1024*50, backupCount=10)
  19. fmt = logging.Formatter(
  20. '%(asctime)s - %(name)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%dT%H:%M:%S')
  21. fh.setFormatter(fmt)
  22. ch = logging.StreamHandler()
  23. ch.setFormatter(fmt)
  24. run_logger = logging.getLogger('simsdt.run')
  25. run_logger.setLevel(logging.INFO)
  26. run_logger.addHandler(fh)
  27. # run_logger.addHandler(qh)
  28. # run_logger.addHandler(ch)
  29. def main(file, solver_path='', q=None):
  30. """Ejecuta la Simulación de Subastas de Derechos de Transmisión."""
  31. if not file:
  32. run_logger.error('No se incluyo un archivo para la ejecucion')
  33. return
  34. # Check if solver 'ipopt' is on path
  35. run_logger.info('Verificando que exista el solver ipopt')
  36. solver_path = shutil.which('ipopt')
  37. if(solver_path):
  38. run_logger.info('Ubicación del solver: {}'.format(solver_path))
  39. else:
  40. run_logger.error('El solver no se encuentra en el PATH')
  41. return
  42. run_logger.info("Inicio de la ejecucion del modelo de subasta")
  43. modelo_subasta = ModeloSubasta(file, solver_path)
  44. try:
  45. modelo_subasta.setmodel()
  46. except Exception as e:
  47. run_logger.error(e)
  48. return
  49. if __name__ == "__main__":
  50. if len(sys.argv) < 2:
  51. print("Se debe incluir un archivo")
  52. else:
  53. main(sys.argv[1])