feat: 添加 API 路由(公告/爬取/微信回调/调度器)+ 健康检查测试

This commit is contained in:
2026-05-09 14:19:11 +08:00
parent 3616e5799d
commit a0a06dfd8c
12 changed files with 341 additions and 0 deletions
View File
+46
View File
@@ -0,0 +1,46 @@
import logging
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from app.config import settings
from app.api.deps import get_crawl_service
logger = logging.getLogger(__name__)
scheduler = AsyncIOScheduler()
async def scheduled_crawl():
logger.info("开始定时爬取任务")
service = get_crawl_service()
names = service.get_spider_names()
for name in names:
try:
results = await service.run_spider(name)
for r in results:
if not r.success:
logger.error(f"Spider {name} 失败: {r.error_message}")
else:
logger.info(f"Spider {name} 完成: {r.total_count}")
except Exception as e:
logger.error(f"Spider {name} 异常: {e}")
logger.info("定时爬取任务完成")
def start_scheduler():
if not settings.scheduler_enabled:
return
scheduler.add_job(
scheduled_crawl,
"cron",
hour="8,14,18",
minute="0",
id="scheduled_crawl",
name="定时爬取",
timezone="Asia/Shanghai",
)
scheduler.start()
logger.info("APScheduler 已启动 (8:00, 14:00, 18:00)")
def shutdown_scheduler():
if scheduler.running:
scheduler.shutdown(wait=False)
logger.info("APScheduler 已停止")