from datetime import date from app.tasks.constants import TASK_RUN_MARKET_CLOSE from app.core.database import SessionLocal from app.application.pipelines import MarketPipelineService from app.tasks.app import celery_app @celery_app.task( name=TASK_RUN_MARKET_CLOSE, autoretry_for=(Exception,), retry_backoff=True, retry_kwargs={"max_retries": 3}, ) def run_market_report( report_type: str = "close", trade_date: str | None = None, force: bool = False ) -> dict: target = date.fromisoformat(trade_date) if trade_date else date.today() db = SessionLocal() try: return MarketPipelineService(db).run( report_type=report_type, reference_date=target, force=force, actor="scheduler", ) finally: db.close() run_market_close = run_market_report