agent-Specialization/server/context/_flask_bridge.py
JOJO aa9bf377a3 feat(runtime): Gateway 收尾——session 传输暴露、host Bearer 通道、flask 依赖拆解、审批链路收口
- session.* 传输暴露:新增 gateway_api 蓝图(list/create/history),RuntimeService 补 create_session
- host Bearer 通道:gateway_auth 双通道认证(host 模式+回环限定,token 存 DATA_DIR/host_api_token),tasks/approval 路由接入
- api_v1 会话路由转调公共入口消双轨,会话索引/列表补齐 run_mode/model_key/custom_prompt_name/personalization_name
- flask 包依赖拆解:_flask_bridge 延迟桥接 + context 子包 PEP 562 懒加载,import server.tasks/runtime 不再拉起 flask
- 审批链路:mark_expired 终态回写(超时/软停止/取消三路径)+ 终态 TTL 惰性清理(3600s)
- 测试 patch 点随迁;全量 75 测试失败恰为 4 项存量,独立启动验收 4/4 全绿

Co-authored-by: Astrion powered by Kimi-K3 <astrion-agent@users.noreply.github.com>
2026-09-08 11:37:51 +08:00

41 lines
1.5 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.

"""Flask 请求上下文的延迟桥接任务核心层解耦用2026-09-08
背景server.context 子包中仅「兼容模式」(未传 RuntimeIdentity的代码路径
需要读写 Flask session。本模块把 flask 依赖收敛为使用点延迟导入:
flask 包不可用时按「无请求上下文」处理(读返回默认值、写静默跳过),
使 server.tasks 等核心层在无 flask 环境中也能独立加载G4 拆解)。
函数命名与 flask 原符号保持一致has_request_context调用点改动最小
调用方通过 `from server.context._flask_bridge import ...` 引入。
"""
from __future__ import annotations
from typing import Any
def has_request_context() -> bool:
"""探测 Flask 请求上下文flask 包不可用时返回 False。"""
try:
from flask import has_request_context as _flask_has_request_context
except ImportError:
return False
return _flask_has_request_context()
def session_get(key: str, default: Any = None) -> Any:
"""读取 Flask session无 flask 包或无请求上下文时返回 default。"""
if not has_request_context():
return default
from flask import session
return session.get(key, default)
def session_set(key: str, value: Any) -> None:
"""回写 Flask session无 flask 包或无请求上下文时静默跳过。"""
if not has_request_context():
return
from flask import session
session[key] = value