import logging from apscheduler.schedulers.blocking import BlockingScheduler import EnergyPriceScraperFactory import app_impl 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 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() pstryk_scraper = EnergyPriceScraperFactory.create(name, conn=conn) # 11:30 and hourly safety check hourly_tick(pstryk_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()