logging de schedule
This commit is contained in:
29
app/main.py
29
app/main.py
@ -7,6 +7,14 @@ from apscheduler.triggers.cron import CronTrigger
|
|||||||
from webscrapper import search_from_keywords_file, search_indice
|
from webscrapper import search_from_keywords_file, search_indice
|
||||||
import csv
|
import csv
|
||||||
from datetime import datetime, time
|
from datetime import datetime, time
|
||||||
|
import logging
|
||||||
|
|
||||||
|
LOG_FILE = "app.log"
|
||||||
|
logging.basicConfig(
|
||||||
|
filename=LOG_FILE, # Archivo de logs
|
||||||
|
level=logging.INFO, # Nivel de logging (DEBUG, INFO, WARNING, ERROR, CRITICAL)
|
||||||
|
format="%(asctime)s - %(levelname)s - %(message)s", # Formato de los logs
|
||||||
|
)
|
||||||
|
|
||||||
# Crear las tablas en MySQL si no existen
|
# Crear las tablas en MySQL si no existen
|
||||||
Base.metadata.create_all(bind=engine)
|
Base.metadata.create_all(bind=engine)
|
||||||
@ -21,38 +29,41 @@ scheduler.add_job(search_from_keywords_file, "cron", hour=18, minute=0) # Ejecu
|
|||||||
|
|
||||||
def cargar_tareas_desde_csv(indices):
|
def cargar_tareas_desde_csv(indices):
|
||||||
"""Lee el CSV y agrega tareas al scheduler"""
|
"""Lee el CSV y agrega tareas al scheduler"""
|
||||||
|
logging.info("📌 Cargando tareas desde CSV...")
|
||||||
try:
|
try:
|
||||||
with open(indices, mode='r', encoding='utf-8') as file:
|
with open(indices, mode='r', encoding='utf-8') as file:
|
||||||
reader = csv.reader(file, delimiter=';')
|
reader = csv.reader(file, delimiter=';')
|
||||||
|
|
||||||
for row in reader:
|
for row in reader:
|
||||||
if len(row) < 4: # Verifica que haya suficientes columnas
|
logging.info(f"📌 Leyendo fila: {row}")
|
||||||
print(f"❌ Línea incorrecta en CSV: {row}")
|
if len(row) < 4:
|
||||||
|
logging.warning(f"❌ Línea incorrecta en CSV: {row}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
url, nombre, horaInicio, horaFin = row # Extrae los valores
|
url, nombre, horaInicio, horaFin = row
|
||||||
|
|
||||||
try:
|
try:
|
||||||
horaInicio = datetime.strptime(horaInicio.strip(), "%H:%M").time()
|
horaInicio = datetime.strptime(horaInicio.strip(), "%H:%M").time()
|
||||||
horaFin = datetime.strptime(horaFin.strip(), "%H:%M").time()
|
horaFin = datetime.strptime(horaFin.strip(), "%H:%M").time()
|
||||||
except ValueError:
|
except ValueError:
|
||||||
print(f"❌ Formato de hora incorrecto en línea: {row}")
|
logging.error(f"❌ Formato de hora incorrecto en línea: {row}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
obj = {"url": url.strip(), "nombre": nombre.strip(), "horaInicio": horaInicio, "horaFin": horaFin}
|
obj = {"url": url.strip(), "nombre": nombre.strip(), "horaInicio": horaInicio, "horaFin": horaFin}
|
||||||
|
|
||||||
# Programar ejecución solo dentro del rango de horas permitido
|
# Agregar tareas para cada hora en el rango
|
||||||
for hora in range(horaInicio.hour, horaFin.hour + 1):
|
for hora in range(horaInicio.hour, horaFin.hour + 1):
|
||||||
scheduler.add_job(
|
scheduler.add_job(
|
||||||
search_indice,
|
search_indice,
|
||||||
trigger=CronTrigger(hour=hora, minute=0),
|
trigger=CronTrigger(hour=hora, minute=0),
|
||||||
args=[obj]
|
args=[obj]
|
||||||
)
|
)
|
||||||
|
logging.info(f"✅ Tarea agregada para {nombre} a las {hora}:00")
|
||||||
|
|
||||||
print("✅ Tareas programadas correctamente.")
|
logging.info("✅ Todas las tareas fueron programadas.")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"❌ Error al leer el archivo CSV: {e}")
|
logging.error(f"❌ Error al leer el archivo CSV: {e}")
|
||||||
|
|
||||||
|
|
||||||
@asynccontextmanager
|
@asynccontextmanager
|
||||||
|
Reference in New Issue
Block a user