Azure Functions Python本地运行时:同名环境变量取值优先级问题
本地Azure Function环境变量优先级问题
背景
- 本地运行Azure Function时,通过以下代码读取的环境变量默认来自
local.settings.json文件,作用类似.env文件:import os foo = os.getenv('ENV_VAR_NAME') - 部署到Azure云端后,环境变量则从Function App的**应用设置(App Settings)**中读取。
问题
本地运行Function时,若同时满足两个条件:
- 终端中设置了环境变量(例如执行命令
set DEBUG=true) - 该变量在
local.settings.json中也存在(例如配置项"DEBUG": false)
代码会优先读取哪一个值?
答案
优先读取终端中设置的环境变量。
原因
Azure Functions本地运行时,local.settings.json中的配置会被加载为当前进程的环境变量,但如果系统(终端)中已经存在同名的环境变量,系统级的环境变量优先级更高,会覆盖local.settings.json中的对应值。这是因为终端设置的变量属于进程运行的原生环境,local.settings.json的配置是作为补充环境变量加载的,不会覆盖已存在的系统环境变量。
验证示例
比如运行以下代码:
import os debug_flag = os.getenv('DEBUG') print(f"DEBUG value: {debug_flag}")
当终端执行set DEBUG=true,且local.settings.json中配置"DEBUG": false时,函数运行后会输出 DEBUG value: true,证明终端设置的变量被优先读取。
内容的提问来源于stack exchange,提问作者ericOnline
相关产品推荐
相关产品推荐

