12345678910111213141516171819202122232425262728293031323334353637383940 |
- # 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()
|