- 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>
41 lines
1.5 KiB
Python
41 lines
1.5 KiB
Python
"""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
|