初始化
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
"""定时任务注册"""
|
||||
|
||||
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)
|
||||
Reference in New Issue
Block a user