Dask 配置文件加载机制说明
https://docs.dask.org/en/stable/configuration.html
源码位置
Dask 的配置文件解析源码在:
- 主文件 :
dask/config.py - 关键函数 :
_get_paths()(第21-39行): 定义配置文件搜索路径collect_yaml()(第209-244行): 收集并解析 YAML/JSON 文件collect()(第499-523行): 合并所有配置源refresh()(第526-563行): 加载配置到全局config字典_load_config_file()(第175-194行): 实际解析 YAML 文件的函数
默认搜索路径
根据 _get_paths() 函数,Dask 会按顺序搜索以下路径:
DASK_ROOT_CONFIG环境变量(默认:/etc/dask)sys.prefix/etc/dask(虚拟环境的etc/dask目录)site.PREFIXES中每个前缀的etc/dask目录~/.config/dask(用户配置目录)DASK_CONFIG环境变量指定的路径(如果设置了)
注意: 项目根目录默认不在搜索路径中!
如何让根目录的配置文件生效
方法1: 使用环境变量(推荐)
设置 DASK_CONFIG 环境变量指向项目根目录或配置文件:
bash
# Windows PowerShell
$env:DASK_CONFIG = "D:\prj_py\dask-demo"
# 或者在代码中设置
import os
os.environ["DASK_CONFIG"] = r"D:\prj_py\dask-demo"
方法2: 在代码中手动加载
python
import dask.config
import os
# 获取项目根目录
project_root = os.path.dirname(os.path.abspath(__file__))
# 手动刷新配置,包含项目根目录
dask.config.refresh(paths=[project_root])
# 或者直接指定配置文件路径
dask.config.refresh(paths=[os.path.join(project_root, "dask_cluster_config.yaml")])
方法3: 将配置文件放到标准位置
将 dask_cluster_config.yaml 放到 ~/.config/dask/ 目录:
python
import os
import shutil
config_dir = os.path.expanduser("~/.config/dask")
os.makedirs(config_dir, exist_ok=True)
shutil.copy("dask_cluster_config.yaml", config_dir)
配置文件格式
配置文件可以是 YAML 或 JSON 格式,必须是顶层为字典的结构:
yaml
# dask_cluster_config.yaml
distributed:
scheduler:
dashboard:
default: :8787
worker:
memory:
target: 0.8
spill: 0.9
threads: 4
dataframe:
shuffle:
method: p2p
验证配置是否加载
python
import dask.config
# 查看所有搜索路径
print("搜索路径:", dask.config.paths)
# 查看当前配置
print("当前配置:", dask.config.config)
# 获取特定配置项
print(dask.config.get("distributed.worker.threads"))