from apscheduler.schedulers.background import BackgroundScheduler import logging from typing import Dict, Callable from sqlalchemy.orm import Session from services.product import ProductService from services.tcgplayer import TCGPlayerService from db.models import File class TaskService: def __init__(self, db: Session, product_service: ProductService, tcgplayer_service: TCGPlayerService): self.scheduler = BackgroundScheduler() self.logger = logging.getLogger(__name__) self.tasks: Dict[str, Callable] = {} self.db = db self.product_service = product_service self.tcgplayer_service = tcgplayer_service async def start(self): self.scheduler.start() self.logger.info("Task scheduler started.") self.register_scheduled_tasks() def register_scheduled_tasks(self): self.scheduler.add_job( self.daily_report, 'cron', hour=0, minute=0, id='daily_report' ) self.scheduler.add_job( self.pricing_update, 'cron', minute=28, id='pricing_update' ) def daily_report(self): # Removed async self.logger.info("Generating daily report") # Daily report logic def pricing_update(self): # Removed async self.logger.info("Hourly pricing update") self.tcgplayer_service.cron_load_prices() async def process_manabox_file(self, file: File): self.logger.info("Processing ManaBox file") self.product_service.bg_process_manabox_file(file.id) self.logger.info("Finished processing ManaBox file")