# core/di/container.py from typing import Dict, Any, Type from dependency_injector import containers, providers from config.base import settings from services.async_mysql_service import AsyncMysqlService from services.async_mq_producer import AsyncMQProducer from services.async_mq_consumer import AsyncRocketMQConsumer class ServiceContainer(containers.DeclarativeContainer): """服务容器:统一管理所有服务的生命周期""" # 配置 config = providers.Configuration() # 数据库服务工厂 db_service = providers.Factory( AsyncMysqlService, platform=config.platform, mode=config.mode ) # MQ 生产者工厂 mq_producer = providers.Singleton( AsyncMQProducer, topic_name="topic_crawler_etl_prod_v2", platform=config.platform, mode=config.mode ) # MQ 消费者工厂 mq_consumer = providers.Factory( AsyncRocketMQConsumer, topic_name=config.topic_name, group_id=config.group_id ) # 全局容器实例 container = ServiceContainer()