Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

count_cpus() and RAM crash with FileNotFoundError when SLURM_JOB_ID is set but scontrol is missing

未关闭 适合新手
#1,455 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 2 天内回复

还没有人认领这个 Issue。

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
83/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
活跃
技术栈
python
领域
backend

调研方向

从 codecarbon/core/util.py 中的 count_cpus() 和 codecarbon/external/ram.py 中的 RAM._read_slurm_scontrol() 开始,然后检查现有的 CalledProcessError 回退路径。为每种缺少 scontrol 的情况添加测试,并确认两者都会发出警告,回退到机器的 CPU 数量或总 RAM。

由索引模型根据 Issue 内容生成。

描述

Problem

count_cpus() (codecarbon/core/util.py) and RAM._read_slurm_scontrol() (codecarbon/external/ram.py) only catch subprocess.CalledProcessError. When SLURM_JOB_ID is set but the scontrol binary is not on PATH, subprocess.check_output raises FileNotFoundError instead, which is not caught.

This happens for example when a job runs inside a container (Docker / Apptainer) launched by SLURM: the SLURM env vars propagate but the SLURM client tools are not installed. The tracker then records no emissions and tracker.stop() returns None.

Reproduction

SLURM_JOB_ID=123 python -c "from codecarbon.core.util import count_cpus; count_cpus()"
# FileNotFoundError: [Errno 2] No such file or directory: 'scontrol'

Expected

Fall back to the machine's CPU count / total RAM with a warning, the same way the existing CalledProcessError path does.

Proposed fix

Catch (subprocess.CalledProcessError, FileNotFoundError) in both places and add a test for each. Happy to open a PR.

主要语言
Python
星标
1.9k
派生
347
平均合并
2 天 13 小时
30 天内合并 PR
20

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

mlco2/codecarbon 的其他 Issue

查看 mlco2/codecarbon 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。