feat: 添加 API 路由(公告/爬取/微信回调/调度器)+ 健康检查测试
This commit is contained in:
@@ -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 已停止")
|
||||
Reference in New Issue
Block a user