Files
DDSRem 2de976f6b3 Merge pull request #7050 from DDSRem-Dev/codex-comment-migration
docs: 统一全项目中文注释和结构化契约说明
2026-10-17 19:26:29 +08:00

98 lines
2.9 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
托管资源 Runtime 与站点资源安装的宿主组合根。
"""
from __future__ import annotations
import threading
from collections.abc import Callable
from typing import Optional
from app.adapters.system.resource import (
configure_resource_version_provider,
reset_resource_version_provider,
)
from app.runtime.capabilities.runtime import CapabilityRuntime
from app.runtime.extensions.resource import (
AsyncManagedResourceAdapter,
SyncManagedResourceAdapter,
build_managed_resource_registry,
)
from app.runtime.resources import (
MANAGED_RESOURCE_ASYNC_KIND,
MANAGED_RESOURCE_SYNC_KIND,
configure_managed_resource_runtime,
reset_managed_resource_runtime,
)
_runtime_lock = threading.RLock()
_managed_resource_runtime: Optional[CapabilityRuntime] = None
def configure_managed_resource_composition() -> CapabilityRuntime:
"""
构建并注入资源 Runtime;只发现声明,不提前启动具体资源。
"""
global _managed_resource_runtime
with _runtime_lock:
if _managed_resource_runtime is None:
_managed_resource_runtime = CapabilityRuntime(
build_managed_resource_registry(),
adapters={
MANAGED_RESOURCE_SYNC_KIND: SyncManagedResourceAdapter(),
MANAGED_RESOURCE_ASYNC_KIND: AsyncManagedResourceAdapter(),
},
)
configure_managed_resource_runtime(_managed_resource_runtime)
return _managed_resource_runtime
async def stop_managed_resource_composition() -> bool:
"""
关闭已初始化的资源 Runtime,并返回 owner 是否收敛。
"""
with _runtime_lock:
runtime = _managed_resource_runtime
if runtime is None:
return True
return await runtime.shutdown_async(reason="application_shutdown")
def reset_managed_resource_composition() -> None:
"""
释放已关闭的具体 Runtime 及其门面引用。
"""
global _managed_resource_runtime
with _runtime_lock:
runtime = _managed_resource_runtime
if runtime is not None and not runtime.is_shutdown:
raise RuntimeError("Managed Resource Runtime 尚未关闭,不能释放 owner")
reset_managed_resource_runtime()
_managed_resource_runtime = None
def configure_site_resource_versions(
version_provider: Callable[[], tuple[str, str]],
) -> None:
"""
装配运行期资源版本读取器,不在应用启动后下载或替换资源。
"""
configure_resource_version_provider(version_provider)
def install_site_resources(
version_provider: Callable[[], tuple[str, str]],
) -> bool:
"""
兼容旧调用方,仅装配版本读取器并禁止启动阶段直接安装资源。
"""
configure_site_resource_versions(version_provider)
return False
def reset_site_resource_composition() -> None:
"""
撤销当前 lifespan 的资源版本读取器。
"""
reset_resource_version_provider()