from apscheduler.schedulers.background import BackgroundScheduler import logging from typing import Dict, Callable from sqlalchemy.orm import Session from app.services.product import ProductService from app.db.models import File from app.services.pricing import PricingService class TaskService: def __init__(self, db: Session, product_service: ProductService, pricing_service: PricingService): self.scheduler = BackgroundScheduler() self.logger = logging.getLogger(__name__) self.tasks: Dict[str, Callable] = {} self.db = db self.product_service = product_service self.pricing_service = pricing_service async def start(self): self.scheduler.start() self.logger.info("Task scheduler started.") self.register_scheduled_tasks() # self.pricing_service.generate_tcgplayer_inventory_update_file_with_pricing(['e20cc342-23cb-4593-89cb-56a0cb3ed3f3']) def register_scheduled_tasks(self): self.scheduler.add_job(self.hourly_pricing, 'cron', minute='45') self.logger.info("Scheduled tasks registered.") def hourly_pricing(self): self.logger.info("Running hourly pricing task") self.pricing_service.cron_load_prices() self.logger.info("Finished hourly pricing task") 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")