"""依赖注入""" from fastapi import Request from app.services.proxy_service import ProxyService from app.services.plugin_service import PluginService from app.services.scheduler_service import SchedulerService from app.services.validator_service import ValidatorService from app.repositories.proxy_repo import ProxyRepository from app.core.tasks.queue import ValidationQueue from app.core.config import settings as app_settings def get_proxy_service() -> ProxyService: return ProxyService() def get_plugin_service() -> PluginService: return PluginService() def get_scheduler_service(request: Request) -> SchedulerService: return request.app.state.scheduler_service def get_validation_queue(request: Request) -> ValidationQueue: return request.app.state.validation_queue def create_scheduler_service(db_settings: dict | None = None) -> SchedulerService: """在应用启动时创建 SchedulerService(非请求上下文) db_settings 来自数据库持久化设置,用于覆盖 .env / 默认值。 """ db_settings = db_settings or {} validator = ValidatorService( timeout=db_settings.get("validation_timeout", app_settings.validator_timeout), connect_timeout=db_settings.get("connect_timeout", app_settings.validator_connect_timeout), max_concurrency=db_settings.get("default_concurrency", app_settings.validator_max_concurrency), ) proxy_repo = ProxyRepository() queue = ValidationQueue( validator=validator, proxy_repo=proxy_repo, worker_count=db_settings.get("default_concurrency", app_settings.validator_max_concurrency), score_valid=app_settings.score_valid, score_invalid=app_settings.score_invalid, score_min=app_settings.score_min, score_max=app_settings.score_max, ) svc = SchedulerService(validation_queue=queue, proxy_repo=proxy_repo) svc.interval_minutes = db_settings.get( "validate_interval_minutes", 30 ) return svc