ranczo-energy-price-scrapers/app.py
Bartosz Wieczorek 39d28d2e8d small fixes
2025-10-14 13:49:13 +02:00

57 lines
1.5 KiB
Python

import logging
from apscheduler.schedulers.blocking import BlockingScheduler
import EnergyPriceScraperFactory
from utils.logging import setup_logging
from utils.time import WARSAW_TZ
from app_impl import hourly_tick
from utils.logging import function_logger
# import datetime
# import app_impl
setup_logging(logging.DEBUG)
sched = BlockingScheduler(timezone=WARSAW_TZ)
def run(name: str):
log = function_logger()
log.info(f"Running {name}")
try:
conn = EnergyPriceScraperFactory.setup_db()
scraper = EnergyPriceScraperFactory.create(name, conn=conn)
# 11:30 and hourly safety check
hourly_tick(scraper)
except Exception as e:
log.error(f"{name} throw an exception: {e}")
# def run_arbitrary(name: str, date):
# log = function_logger()
# log.info(f"Running {name}")
# try:
# conn = EnergyPriceScraperFactory.setup_db()
# pstryk_scraper = EnergyPriceScraperFactory.create(name, conn=conn)
# # 11:30 and hourly safety check
# app_impl.date_run_tick(pstryk_scraper, date)
# except Exception as e:
# log.error(f"{name} throw an exception: {e}")
def run_pstryk():
run("Pstryk")
def run_PSE_RCE():
run("PSE_RCE")
def run_TGE_RDN():
run("TGE_RDN")
# Daily triggers at exact local times (DST-safe)
sched.add_job(run_pstryk, 'cron', hour='*', minute='35')
sched.add_job(run_PSE_RCE, 'cron', hour='*', minute='35')
sched.add_job(run_TGE_RDN, 'cron', hour='*', minute='25')
sched.start()