Skip to content

docs: .env.example 补齐可选队列/Redis/worker 环境变量说明(doc-only) - #24

Merged
XiaoCow666 merged 1 commit into
XiaoCow666:mainfrom
linxi123-A:docs/env-example-queue-config
Sep 8, 2026
Merged

docs: .env.example 补齐可选队列/Redis/worker 环境变量说明(doc-only)#24
XiaoCow666 merged 1 commit into
XiaoCow666:mainfrom
linxi123-A:docs/env-example-queue-config

Conversation

@linxi123-A

Copy link
Copy Markdown
Contributor

背景

阶段一项目理解(PR #16#22,均已合并)将"运行参数模板与代码口径一致"列为待改进项:
config.py 已支持把"非 demo 的提交评测/能力分析"切换到 RQ 外部队列,app.py 支持
会话 Redis 及失败自动降级,独立评测 worker 读取 CODESENSE_CONFIG,但 .env.example
未收录以上任何变量,维护者只能翻代码才能发现这些可配置项。

变更范围(doc-only,仅 .env.example,+25/-0)

  • 新增"提交评测外部队列"段:SUBMISSION_EVALUATION_QUEUE_BACKEND / _REDIS_URL /
    _QUEUE_NAME / _QUEUE_TTL(默认 thread;rq 时 _REDIS_URL 必填,否则启动校验失败);
  • 新增"能力分析外部队列"段:ABILITY_ANALYSIS_* 四个变量,约束同上;
  • 新增"会话 Redis"段:REDIS_URL(默认 redis://127.0.0.1:6379/0,失败自动降级文件系统);
  • 新增"worker 配置档"段:CODESENSE_CONFIG(worker 默认 production,Web 进程用 FLASK_CONFIG)。
  • 所有新增行均保持注释状态:不设置任何值、不改变任何默认行为,纯模板文档补全。

验证命令及结果

验证项 命令 / 方式 结果
变量名与默认值 rg -n "QUEUE_BACKEND|_REDIS_URL|QUEUE_NAME|QUEUE_TTL" config.py config.py L77-L113 定义全部 8 个队列变量及默认值(thread / '' / 队列名 / 300),与模板注释一致
rq 必填校验 同上 L142-L165 两个 *_REDIS_URL 在 backend=rq 时缺失会启动报错,与模板注释一致
TTL 边界 rg "minimum=30, maximum=86400" config.py L88、L113 命中(默认 300,范围 30-86400)
会话 Redis rg "REDIS_URL" app.py os.environ.get('REDIS_URL') or 'redis://127.0.0.1:6379/0',连接失败降级 filesystem,与注释一致
worker 配置档 rg "CODESENSE_CONFIG" tasks/*_worker.py submission_worker.py L26、ability_worker.py L30,默认 production,与注释一致
行为零变化 git diff 审阅 新增行全部以 # 注释,无生效赋值
基线 git checkout -b ... origin/main 基于最新 main(1b4d51e),与 main 刚新增的 4 行 AI 流式变量(L20-L23)无重叠

未运行 pytest / 应用:.env.example 是模板而非运行时依赖,不触碰任何被加载的代码路径。

事实与推断边界

  • 事实:变量名、默认值、校验行为、降级行为均来自当前 main 的 config.py / app.py /
    tasks/*_worker.py 静态核对(行号见上表)。
  • 推断:注释中"单机部署通常无需设置 CODESENSE_CONFIG"基于 worker 脚本自带默认值即可
    工作的代码事实推断,未在真实多机环境验证。
  • 边界:本 PR 不验证 rq 后端完整运行链路(需真实 Redis 与 worker 进程),仅核对配置入口。

未解决问题与待决策事项(高风险边界,仅记录、不在本 PR 处理)

  1. 部署口径不一致:systemd 单元 --bind 8000 与 gunicorn_config.py / run.py 默认 5000
    并存,.env.example 示例为 8000;属部署拓扑决策,改动会触碰部署文件,超出本 PR 边界。
  2. 启用 rq 后 demo 评测与 async_tasks 进程内队列(批量趋势、思维预设)仍在 Web 进程执行
    (PR docs: 按 PR #16 评审意见 P3 限定 RQ 迁出范围表述(doc-only) #22 已在项目文档中限定该范围);是否进一步拆分属架构决策。
  3. .env.example 中英文注释混用(main 新增 AI 流式注释为英文),风格是否统一留待负责人决定。

后续建议

  • 若计划正式支持 RQ 部署,可补一份面向维护者的部署手册(worker 与 Redis 隔离要求
    在 AGENTS.md 已有约束,可整合成 docs/deploy-rq.md)。
  • PROJECT_UNDERSTANDING.md 对应章节可在下次文档 PR 中同步引用本模板新增段。

不修改任何业务代码、数据库结构、权限、部署文件或核心接口。

@XiaoCow666 XiaoCow666 left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

结论:通过,提供的 diff 中没有必要修改项。

已验证范围:仅静态审阅 .env.example 第 64–88 行新增内容。两个队列配置段、会话 Redis 和 worker 配置档示例全部处于注释状态;原有赋值未变,没有引入生效配置、凭据、业务代码或部署变更,因此未发现运行行为回归。

验证边界:未调用工具或运行测试;未提供 config.pyapp.py 和 worker 源码,故无法独立确认描述中的默认值、TTL 范围及降级行为,PR 正文的验证记录仅作为贡献者报告。

后续建议(非阻塞):

  1. .env.example 的“能力分析外部队列(约束同上)”可明确写出:选择 rq 时必须配置 ABILITY_ANALYSIS_REDIS_URL,减少首次配置时的歧义。
  2. worker 段可将“单机部署通常无需设置”改成“使用默认 production 配置时无需设置”,更准确地表达配置选择条件。
  3. 当前 PR description 已清楚说明范围与验证边界。后续修改这些示例时,继续记录对应源码位置,并用 diff 确认示例仍全部注释;若实际启用 rq,再单独验证 Redis 连接与 worker 消费链路。本次无需为纯注释变更补跑完整测试。

合并前隔离验证

  • 结果:未通过
  • 命令:gh repo clone
  • 耗时:18079ms
  • 摘要:Cloning into 'E:\CodeSense\pr-review-relay\data\work\premerge-9spZBn\repo'...
    fatal: unable to access 'https://github.com/XiaoCow666/CodeSense.git/': schannel: failed to receive handshake, SSL/TLS connection failed
    failed to run git: exit status 128

合并前验证未通过,本次不合并。请先修复验证输出中指出的问题,再提交新的 head。

@XiaoCow666 XiaoCow666 left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

结论:通过。提供的 diff 中未发现必要修改项。

已验证范围:仅静态审阅 .env.example 第 64–88 行新增内容。队列、会话 Redis 和 worker 配置示例全部保持注释状态,没有新增生效赋值;diff 未涉及业务代码、数据库、权限或部署文件,因此未见直接改变运行行为的风险。未调用工具或运行测试;PR 描述中的源码核对结果属于贡献者提供的信息,无法仅凭本次 diff 独立确认。

后续建议(不阻塞):

  • 在两个 *_QUEUE_TTL 附近补充 TTL 的具体含义,依据实现说明它限制的是排队等待时间、执行时间还是结果保留时间,避免部署者误配。
  • 将“单机部署通常无需设置”改为“使用默认 production 配置时无需设置”,让说明直接对应配置条件,避免读者按机器数量判断。

本次 PR description 已清楚列出范围、核对位置和未运行测试的原因,无需为合并补跑应用。后续同类 PR 可继续采用这一验证流程:核对变量名、默认值及约束,检查示例是否仍为注释,并在描述中区分静态核对与实际运行验证。

@XiaoCow666
XiaoCow666 merged commit 445e21d into XiaoCow666:main Sep 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants