"""FastAPI应用入口""" import asyncio import logging from contextlib import asynccontextmanager from fastapi import FastAPI from app.core.config import settings from app.core.logging import setup_logging from app.api import router from app.services import rabbitmq_service setup_logging() logger = logging.getLogger(__name__) @asynccontextmanager async def lifespan(app: FastAPI): """应用生命周期管理""" logger.info("服务启动中...") # 自动启动所有采集任务 if settings.crawler.auto_start: from app.services import crawler_manager logger.info("自动启动采集任务...") asyncio.create_task(crawler_manager.start_all()) yield logger.info("服务关闭中...") from app.services import crawler_manager crawler_manager.stop_all() rabbitmq_service.close() app = FastAPI( title="招聘数据采集服务", description="从八爪鱼API采集招聘数据,通过Kafka提供消费接口", version=settings.app.version, lifespan=lifespan ) app.include_router(router) if __name__ == "__main__": import uvicorn uvicorn.run("app.main:app", host="0.0.0.0", port=8000, reload=True)