giga_tcg/services/task.py

51 lines
1.7 KiB
Python

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=41,
# 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")