51 lines
1.7 KiB
Python
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") |