Beispiel #1
0
    def put(self, ini_date: str = None, end_date: str = None):
        """ Ejecuta reportes diarios desde fecha inicial a final
            Fecha inicial formato:  <b>yyyy-mm-dd, yyyy-mm-dd H:M:S</b>
            Fecha final formato:    <b>yyyy-mm-dd, yyyy-mm-dd H:M:S</b>
        """
        if ini_date is None and end_date is None:
            ini_date, end_date = u.get_dates_by_default()
        else:
            success1, ini_date = u.check_date_yyyy_mm_dd(ini_date)
            success2, end_date = u.check_date_yyyy_mm_dd(end_date)
            if not success1 or not success2:
                msg = "No se puede convertir. " + (ini_date if not success1 else end_date)
                return dict(success=False, msg=msg), 400
        date_range = pd.date_range(start=ini_date, end=end_date, freq=dt.timedelta(days=1))
        to_execute_reports = list()
        existing_reports = list()
        executing_reports = list()
        for ini, end in zip(date_range, date_range[1:]):
            report = SRFinalReportTemporal.objects(fecha_inicio=ini, fecha_final=end).first()
            if report is not None:
                existing_reports.append([str(ini), str(end)])
            else:
                to_execute_reports.append([ini, end])
                executing_reports.append([str(ini), str(end)])

        p = threading.Thread(target=executing_all_reports, kwargs={"to_execute_reports": to_execute_reports})
        p.start()
        return dict(success=True, existing_reports=existing_reports, executing_reports=executing_reports), 200
Beispiel #2
0
 def __init__(self, url_daily_report: str, url_tags_report: str, parameters: dict, ini_date: dt.datetime = None,
              end_date: dt.datetime = None, *args, **values):
     super().__init__(*args, **values)
     self.url_tags_report = url_tags_report
     self.url_daily_report = url_daily_report
     if ini_date is None or end_date is None:
         ini_date, end_date = get_dates_by_default()
     self.ini_date = ini_date
     self.end_date = end_date
     self.last_day = end_date - dt.timedelta(days=1)
     self.daily_summary = None
     self.daily_details = None
     self.tags_report = None
     self.to_report_tags = None
     self.to_report_details = None
     self.parameters = parameters
Beispiel #3
0
 def __init__(self, name: str, mail_config: dict, parameters: dict, trigger: dt.timedelta = None,
              ini_date: dt.datetime = None, end_date: dt.datetime = None, *args, **values):
     super().__init__(*args, **values)
     if trigger is None:
         trigger = dt.timedelta(hours=0)
     self.name = name
     self.mail_config = mail_config
     self.parameters = parameters
     self.trigger = trigger
     self.today = get_today()
     self.start_time = dt.datetime.now()
     self._stop = threading.Event()
     self.trigger_event = self.today + self.trigger if dt.datetime.now() < self.today + self.trigger else \
         self.today + dt.timedelta(days=1) + self.trigger
     self.seconds_to_sleep = 10
     if ini_date is None or end_date is None:
         ini_date, end_date = get_dates_by_default()
     self.ini_date = ini_date
     self.end_date = end_date
     self.daemon = True
Beispiel #4
0
 def run(self):
     n_iter = 0
     log.info("Starting this routine")
     while not self._stop.is_set():
         try:
             self.update_from_db()
             if dt.datetime.now() >= self.trigger_event:
                 msg = f"Executing: {url_disponibilidad_diaria}"
                 log.info(msg)
                 daily_response = requests.put(url_disponibilidad_diaria)
                 msg = f"This process was executed: [{daily_response}]"
                 log.info(msg)
                 if dt.datetime.now().day == 1:
                     ini_date, end_date = get_dates_by_default()
                     url_to_send = url_disponibilidad_mes.replace(
                         "ini_date", ini_date.strftime("%Y-%m-%d"))
                     url_to_send = url_to_send.replace(
                         "end_date", end_date.strftime("%Y-%m-%d"))
                     msg = f"Executing: {url_to_send}"
                     month_response = requests.put(url_to_send)
                     log.info(msg)
                     msg = f"This process was executed: [{month_response}]"
                     log.info(msg)
                 msg = f"All was correctly executed"
                 msg = f"{msg} \nWainting until {self.trigger_event}"
                 self.save(msg)
                 self.update()
                 log.info(msg)
         except Exception as e:
             log.error(
                 f"Error al procesar la información \n{str(e)}\n{traceback.format_exc()}"
             )
         if n_iter % 50 == 0 or n_iter == 0:
             msg = f"The process is running. Waiting until {self.trigger_event}"
             log.info(msg)
             self.save(msg)
         n_iter = n_iter + 1 if n_iter <= 500 else 0
         left_time = self.get_left_time_seconds()
         time.sleep(left_time)
Beispiel #5
0
def test():
    mongo_config = init.MONGOCLIENT_SETTINGS
    connect(**mongo_config)
    rutine_name = "rutina_correo_electronico"
    trigger = dict(hours=7, minutes=40, seconds=0)
    mail_config = dict(from_email="*****@*****.**", users=["*****@*****.**"],
                       admin=["*****@*****.**"])
    parameters = dict(disp_utr_umbral=0.9, disp_tag_umbral=0.9)
    ini_date, end_date = get_dates_by_default()
    ini_date, end_date = dt.datetime(year=2021, month=3, day=1), dt.datetime(year=2021, month=3, day=30)
    th_v = StoppableThreadMailReport(trigger=dt.timedelta(**trigger), name=rutine_name, mail_config=mail_config,
                                     parameters=parameters, ini_date=ini_date, end_date=end_date)
    th_v.save(msg="Configuración guardada")
    state = TemporalProcessingStateReport.objects(id_report=rutine_name).first()
    trigger = dt.timedelta(**state.info["trigger"])
    mail_config = state.info["mail_config"]
    th = get_thread_by_name(rutine_name)
    if th is None:
        th = StoppableThreadMailReport(name=rutine_name, trigger=trigger, mail_config=mail_config, parameters=parameters,
                                       ini_date=ini_date, end_date=end_date)
        th.start()
    else:
        th.stop()
Beispiel #6
0
 def update(self):
     self.today = get_today()
     self.start_time = dt.datetime.now()
     self.ini_date, self.end_date = get_dates_by_default()
     self.trigger_event = self.today + self.trigger if dt.datetime.now() < self.today + self.trigger else \
         self.today + dt.timedelta(days=1) + self.trigger