"""定时任务注册""" from datetime import datetime, timedelta from apscheduler.schedulers.asyncio import AsyncIOScheduler from apscheduler.triggers.interval import IntervalTrigger from apscheduler.triggers.cron import CronTrigger from app.config import settings from app.core.logger import log def create_scheduler() -> AsyncIOScheduler: """创建并注册所有定时任务""" scheduler = AsyncIOScheduler( timezone="Asia/Shanghai", job_defaults={"misfire_grace_time": 60}, ) # 岗位清洗(每 N 秒) scheduler.add_job( _job_clean_task, trigger=IntervalTrigger(seconds=settings.clean_interval_seconds), id="job_clean", name="岗位清洗", max_instances=1, ) # 公司补充(每 N 秒) scheduler.add_job( _company_clean_task, trigger=IntervalTrigger(seconds=settings.company_interval_seconds), id="company_clean", name="公司补充", max_instances=1, ) # 岗位僵尸恢复(每30分钟) scheduler.add_job( _job_zombie_task, trigger=IntervalTrigger(minutes=30), id="job_zombie_recover", name="岗位僵尸恢复", max_instances=1, ) # 公司僵尸恢复(每小时) scheduler.add_job( _company_zombie_task, trigger=IntervalTrigger(hours=1), id="company_zombie_recover", name="公司僵尸恢复", max_instances=1, ) # 岗位下架(每天凌晨2点) scheduler.add_job( _job_expire_task, trigger=CronTrigger(hour=2, minute=0), id="job_expire", name="岗位下架", max_instances=1, ) return scheduler async def _job_clean_task(): from app.services.job_clean_service import run_job_clean try: await run_job_clean() except Exception as e: log.error("岗位清洗任务异常: {}", e) async def _company_clean_task(): from app.services.company_clean_service import run_company_clean try: await run_company_clean() except Exception as e: log.error("公司补充任务异常: {}", e) async def _job_zombie_task(): from app.services.zombie_recover_service import recover_job_zombie try: await recover_job_zombie() except Exception as e: log.error("岗位僵尸恢复异常: {}", e) async def _company_zombie_task(): from app.services.zombie_recover_service import recover_company_zombie try: await recover_company_zombie() except Exception as e: log.error("公司僵尸恢复异常: {}", e) async def _job_expire_task(): from app.services.job_expire_service import run_job_expire try: await run_job_expire() except Exception as e: log.error("岗位下架异常: {}", e)