Deploy grok2api (jiujiu532) to HF Space: port 7860, bucket persistence at /app/data
48d895c verified | """Account runtime singletons and hot-apply helpers. | |
| These helpers expose the process-local account refresh runtime without making | |
| callers import ``app.main``. Admin handlers use them to reconcile strategy and | |
| scheduler state after hot config updates. | |
| """ | |
| from typing import TYPE_CHECKING, Literal | |
| if TYPE_CHECKING: | |
| from .refresh import AccountRefreshService | |
| from .scheduler import AccountRefreshScheduler | |
| _refresh_service: "AccountRefreshService | None" = None | |
| _refresh_scheduler: "AccountRefreshScheduler | None" = None | |
| _refresh_scheduler_leader = False | |
| def set_refresh_service(service: "AccountRefreshService | None") -> None: | |
| """Register the process-global account refresh service.""" | |
| global _refresh_service | |
| _refresh_service = service | |
| def get_refresh_service() -> "AccountRefreshService | None": | |
| """Return the registered account refresh service, if any.""" | |
| return _refresh_service | |
| def set_refresh_scheduler(scheduler: "AccountRefreshScheduler | None") -> None: | |
| """Register the process-global account refresh scheduler.""" | |
| global _refresh_scheduler | |
| _refresh_scheduler = scheduler | |
| def get_refresh_scheduler() -> "AccountRefreshScheduler | None": | |
| """Return the registered account refresh scheduler, if any.""" | |
| return _refresh_scheduler | |
| def set_refresh_scheduler_leader(is_leader: bool) -> None: | |
| """Record whether this worker currently owns the refresh scheduler lock.""" | |
| global _refresh_scheduler_leader | |
| _refresh_scheduler_leader = bool(is_leader) | |
| def is_refresh_scheduler_leader() -> bool: | |
| """Return True when this worker is the active refresh-scheduler leader.""" | |
| return _refresh_scheduler_leader | |
| def reconcile_refresh_runtime( | |
| enabled: bool | None = None, | |
| ) -> Literal["quota", "random"]: | |
| """Hot-apply refresh strategy and scheduler state for the current worker.""" | |
| from app.dataplane.account.selector import current_strategy, set_strategy | |
| from app.platform.config.snapshot import config | |
| from app.platform.logging.logger import logger | |
| refresh_enabled = ( | |
| config.get_bool("account.refresh.enabled", False) | |
| if enabled is None | |
| else bool(enabled) | |
| ) | |
| target_strategy: Literal["quota", "random"] = ( | |
| "quota" if refresh_enabled else "random" | |
| ) | |
| previous_strategy = current_strategy() | |
| if previous_strategy != target_strategy: | |
| set_strategy(target_strategy) | |
| scheduler_action = "unchanged" | |
| scheduler = _refresh_scheduler | |
| if scheduler is not None and _refresh_scheduler_leader: | |
| if refresh_enabled: | |
| if not scheduler.is_running(): | |
| scheduler.start() | |
| scheduler_action = "started" | |
| elif scheduler.is_running(): | |
| scheduler.stop() | |
| scheduler_action = "stopped" | |
| if previous_strategy != target_strategy or scheduler_action != "unchanged": | |
| logger.info( | |
| "account refresh runtime reconciled: previous_strategy={} strategy={} leader={} scheduler_action={}", | |
| previous_strategy, | |
| target_strategy, | |
| _refresh_scheduler_leader, | |
| scheduler_action, | |
| ) | |
| return target_strategy | |
| __all__ = [ | |
| "get_refresh_service", | |
| "set_refresh_service", | |
| "get_refresh_scheduler", | |
| "set_refresh_scheduler", | |
| "is_refresh_scheduler_leader", | |
| "set_refresh_scheduler_leader", | |
| "reconcile_refresh_runtime", | |
| ] | |