You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Faust(Kafka流处理)中无法从env.ini读取configparser环境变量

解决读取env.ini时的KeyError问题

问题场景

你的FastAPI项目结构如下:

- project
   - app
      - kafka_layer
          - faustworker.py
   - core
      - configs.py
   - env.ini

env.ini内容:

[DEFAULT]
DATABASE_URL=url_to_db

configs.py代码:

import configparser

config = configparser.ConfigParser()
config.read("env.ini")

在faustworker.py中尝试读取配置:

from app.core.configs import config
db_url = config['DEFAULT']['DATABASE_URL']

运行时抛出错误:KeyError: 'DATABASE_URL'

问题原因

config.read("env.ini")使用的是相对路径,当启动faustworker.py时,程序的工作目录是project/app/kafka_layer/,而env.ini在项目根目录project/下,导致配置文件未被正确读取,config对象中没有对应的键值对,因此触发KeyError。

解决方案

改用绝对路径读取env.ini,借助pathlib模块获取文件的绝对路径,保证无论从哪个目录启动程序,都能找到配置文件。

修改configs.py代码如下:

import configparser
from pathlib import Path

# 获取当前文件(configs.py)所在目录的上级目录(即项目根目录)
BASE_DIR = Path(__file__).parent.parent.parent
env_path = BASE_DIR / "env.ini"

config = configparser.ConfigParser()
config.read(env_path)

路径说明

  • Path(__file__):获取configs.py的绝对路径
  • .parent:依次向上跳转目录,最终得到项目根目录project/
  • BASE_DIR / "env.ini":拼接得到project/env.ini的绝对路径

修改后,无论从哪个目录启动faustworker.py,都能正确读取到env.ini里的配置,不会再出现KeyError。

内容的提问来源于stack exchange,提问作者Raheel Siddiqui

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 16:05:33