已合并
feat(service): request context中实现async Redis client调用 #415
feat(service): request context中实现async Redis client调用 #415
已合并
Wal1et创建于 8月11日
Wal1et
Wal1et
8月11日

Paired: GitHub #39 ↔ GitCode !415

What type of PR is this?

/kind feature

主要内容

  • 在 RequestContext 增加 redis 属性和 require_redis(),向 Handler 提供完整的异步 Redis 客户端。
  • Redis 客户端仍由 SystemContext 统一创建、复用和关闭,请求上下文只借用客户端。
  • 保持 kv、idempotency、queue、pubsub、lock 等现有 Redis 原语及其行为不变。
  • 补充开发者文档,明确异步调用、Key 命名和客户端生命周期边界。

兼容性

  • 不修改现有 Redis 原语接口、Key 格式或数据结构。
  • Redis 未配置时继续使用统一的 RedisUnavailable 错误。
  • 请求中断后拒绝获取新的底层 Redis 句柄。

验证

  • uv run ruff check .
  • uv run pytest -q:120 passed
  • UT 覆盖客户端复用、缺失配置、请求中断及请求关闭不关闭共享客户端。
  • ST 覆盖 REST Handler 中异步执行 HSET/HGET。

Self-checklist

likedislike
Pull Request已成功合入, 合并人@王明琦
(感谢 Wal1et 的贡献)
atomgit-bot
atomgit-bot
8月11日 评论:

变更摘要

此 PR 在 RequestContext 中新增 redis 属性和 require_redis() 方法,向 Handler 暴露由 SystemContext 统一管理的异步 Redis 客户端。客户端的所有权仍归 SystemContext,请求上下文仅借用引用,不负责创建与关闭。同时补充了单元测试和系统测试,覆盖客户端复用、缺失配置、请求中断拒绝获取句柄以及 REST Handler 中异步执行 HSET/HGET 等场景,并更新了开发者文档以明确异步调用、Key 命名和客户端生命周期边界。

主要改动

  • RequestContext 新增 redis 属性和 require_redis() 方法:在 request_context.py 中新增 redis 属性(通过 require_redis() 返回)和 require_redis() 方法,后者内部调用 self.sysctx.require_redis() 获取共享的异步 Redis 客户端,使 Handler 可直接使用 redis.asyncio 完整 API。
  • require_redis() 内置请求中断检查:require_redis() 在执行前调用 self.check_interrupted(),确保请求被中断后拒绝获取底层 Redis 句柄,防止在已中断的请求中继续操作共享资源。
  • 新增单元测试覆盖三种边界场景:在 test_request_context.py 中新增 test_request_context_exposes_shared_async_redis_client(验证多个请求共享同一客户端、请求关闭不关闭共享连接)和 test_request_context_redis_requires_configuration_and_active_request(验证缺失配置抛出 RedisUnavailable、中断请求抛出 Interrupted)。
  • 新增系统测试验证 REST Handler 异步 Redis 命令:在 test_echo_acceptance.py 中新增 test_rest_handler_can_use_raw_async_redis_commands,端到端验证 Handler 内通过 ctx.redis 执行 HSET/HGET 的完整链路。
  • 补充开发者文档:更新相关文档,明确异步 Redis 调用方式、Key 命名规范和客户端生命周期边界(客户端由 SystemContext 持有,请求代码不得关闭)。
likedislike
不准确?
atomgit-bot
atomgit-bot
8月11日 评论:

代码审查

✅ 未发现问题

likedislike
不准确?
openJiuwen-bot成员
8月11日 评论:

欢迎来到 openJiuwen 社区

Hey @u010240195 , 感谢你对社区的贡献.

机器人使用手册

有关指令的使用,可以点击 此处 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。

likedislike
atomgit-bot
atomgit-bot
8月11日 评论:

AtomGit AI 助手使用指南

在 PR 评论中使用命令即可触发。支持在普通评论和代码行评论中使用。

功能 命令 说明
代码审查 /ai review 检查代码质量、潜在问题、安全风险
PR 摘要 /ai summary 生成 PR 变更内容的结构化摘要
代码解释 /ai explain 解释代码变更的逻辑和意图
自由提问 @atomgit-bot <问题> 询问关于本 PR 的任何问题
帮助 /ai help 显示此帮助信息

免责声明

AI 助手可能存在误判,请结合自身判断。可以对评论点 👍 或 👎 帮助我们改进。

likedislike
不准确?
OopenJiuwen-bot成员
8月11日 添加了label:openJiuwen-cla/yes
openJiuwen-bot成员
8月11日 评论:

CLA 签署成功

u010240195, 感谢您的代码贡献。 所有的代码贡献者都已完成了 CLA 签署。 👍

likedislike
Oopenjiuwen-sync成员
8月11日 修改了pull request 的描述
Wal1etWal1et
8月11日 修改标题为 “feat(service): request context中实现expose async Redis client in”,原标题为“feat(service): expose async Redis client in request context”
Wal1etWal1et
8月11日 修改标题为 “feat(service): request context中实现async Redis client调用”,原标题为“feat(service): request context中实现expose async Redis client in”
Wal1etWal1et
8月11日 关联了issue:[Feature]: Agent Runtime - Agent执行
openJiuwen-bot成员
8月11日 评论:
任务名称 结果 日志操作
静态检查 ✅SUCCESS 点此跳转
防投毒检查 ✅SUCCESS 点此跳转
开源合规检查 ✅SUCCESS 点此跳转
UT测试 N/A N/A
ST测试 N/A N/A
build 编译包 N/A N/A
ruff codecheck {{ruff_codecheck_result}} {{ruff_codecheck_link_text}}
likedislike
OopenJiuwen-bot成员
8月11日 添加了label:ci-successful
王明琦王明琦成员
8月12日 合入了pull request
OopenJiuwen-bot成员
8月12日 删除了label:ci-successful