import asyncio import logging from sqlalchemy.ext.asyncio import async_sessionmaker from services.renewal_service import RenewalService logger = logging.getLogger(__name__) async def run_autorenewal(renewal_service: RenewalService, session_factory: async_sessionmaker): async with session_factory() as session: try: results = await renewal_service.process_autorenewals(session) logger.info("Autorenewal job completed: %s", results) except Exception: logger.exception("Autorenewal job failed") await session.rollback() async def start_scheduler( renewal_service: RenewalService, session_factory: async_sessionmaker, interval_hours: int = 24, ): logger.info("Starting autorenewal scheduler with interval %dh", interval_hours) while True: await run_autorenewal(renewal_service, session_factory) await asyncio.sleep(interval_hours * 3600)