Files
2026-06-02 17:44:03 +08:00

106 lines
2.8 KiB
Python

"""定时任务注册"""
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)