30 lines
960 B
Python
30 lines
960 B
Python
import asyncio
|
|
import logging
|
|
|
|
from sqlalchemy.ext.asyncio import AsyncSession, 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)
|