Files
ewoooc/run_scheduler.py

48 lines
1.6 KiB
Python

# run_scheduler.py
import asyncio
import logging
import time
import schedule
from datetime import datetime, timedelta, timezone
from database.manager import get_session
from database.ai_models import DecisionTracker
from services.decision_tracker import DecisionTracker as DTService
logger = logging.getLogger(__name__)
decision_tracker_service = DTService()
# simulate ICAIM completion callback: schedule follow_up
def on_icaim_task_complete(plan_id: int, sku: str):
"""Triggered by ICAIM scheduler to schedule follow_up via DecisionTracker."""
asyncio.create_task(decision_tracker_service.schedule_follow_up(plan_id, sku))
# schedule settings (keep original schedule logic)
def run_icaim_task():
"""Simulate ICAIM task execution."""
logger.info("[Scheduler] [ICAIM] executing ICAIM analysis task...")
# ... execute ICAIM analysis ...
plan_id = 123
sku = "sample_sku"
# after task completes, trigger follow_up schedule
on_icaim_task_complete(plan_id, sku)
logger.info("[Scheduler] [ICAIM] task completed, triggered follow_up schedule")
# keep original schedule configuration
schedule.every(6).hours.do(run_icaim_task)
logger.info("📅 scheduled: ICAIM analysis task every 6 hours")
# start schedule loop (keep original main loop)
if __name__ == "__main__":
logger.info("Scheduler started.")
while True:
try:
schedule.run_pending()
time.sleep(1)
except KeyboardInterrupt:
logger.info("Scheduler stopped.")
break
except Exception as e:
logger.error(f"Scheduler error: {e}")
time.sleep(5)