77 lines
2.0 KiB
Python
77 lines
2.0 KiB
Python
"""定时任务注册
|
|
|
|
岗位清洗和公司补充改为持续消费模型(启动即运行),
|
|
其余辅助任务保留定时调度。
|
|
"""
|
|
|
|
import asyncio
|
|
from datetime import datetime
|
|
|
|
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:
|
|
"""创建并注册辅助定时任务(岗位清洗/公司补充由 main 直接启动)"""
|
|
scheduler = AsyncIOScheduler(
|
|
timezone="Asia/Shanghai",
|
|
job_defaults={"misfire_grace_time": 60},
|
|
)
|
|
|
|
# 岗位僵尸恢复(每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_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)
|