Environment Variables#
本页提供 Perago 运行时环境变量的精确参考。任务作者通常只需要阅读
runtime/configuration 理解配置流程;排查启动失败、部署变量和本机目录问题时,以本页表格为准。
Perago 只读取当前工作目录下的 .env 和进程环境变量。合并顺序是:
.env values < process environment values
也就是说,.env 只能提供默认值,shell、部署系统或 supervisor 注入的进程环境变量会覆盖同名 .env 值。
连接变量#
变量 |
状态 |
默认值 |
读取位置 |
校验和说明 |
|---|---|---|---|---|
|
required for |
无 |
|
空值表示未配置;值会去除前后空白。 |
|
required for workspace-task |
无 |
|
LakeFS 三个变量必须全部配置或全部省略;缺任意一个都会报 |
|
required for workspace-task |
无 |
|
空值表示未配置; |
|
required for workspace-task |
无 |
|
不会在 |
Perago 目前不会把 Conductor auth key、Conductor auth secret 或 LakeFS 配置写入 Conductor TaskDef,也不会把这些值放入 task input/output。它们是 worker-local runtime config。
本机运行变量#
变量 |
状态 |
默认值 |
读取位置 |
校验和说明 |
|---|---|---|---|---|
|
optional |
平台临时目录下的 |
|
attempt-local workspace 根目录。默认会探测目录是否可创建、可写。 |
|
optional |
平台临时目录下的 |
|
worker JSONL 日志根目录。默认会探测目录是否可创建、可写。 |
|
optional |
|
|
接受正数加 |
|
optional |
|
|
接受正整数加 |
|
optional |
从 module target 删除非字母数字字符后派生 |
|
只能包含 ASCII 字母和数字。supervisor 使用它派生 broker worker id 和 executor |
|
generated / debug-only |
supervisor 生成;非 supervisor 调试进程退回到 |
worker runtime identity |
|
|
required for metrics-enabled |
无 |
|
低基数 Perago runtime instance 身份,用于区分多个实例运行同一个 Task Worker 时的 |
|
optional |
|
|
接受 |
|
optional |
|
|
失败 task 写入 Conductor |
|
optional |
|
|
接受正整数加 |
|
optional |
|
|
接受正整数加 |
|
optional |
unset |
|
接受正整数加 |
.env 解析规则#
.env 解析是有意保持简单的:
支持
KEY=value。支持
export KEY=value。支持用单引号或双引号包裹整个值。
忽略空行、注释行和没有
=的行。不做 shell 展开、变量插值或转义解释。
示例:
export PERAGO_LOG_FILE_MAX_SIZE=512KB
PERAGO_WORKSPACE_ROOT='/tmp/perago/workspaces'
PERAGO_LOG_ROOT="/tmp/perago/logs"
PERAGO_WORKER_ID_PREFIX=localWorker
PERAGO_INSTANCE_ID=localWorker-001
PERAGO_EXECUTION_MODE=process
PERAGO_FAILURE_REASON_MAX_LENGTH=500
PERAGO_WORKSPACE_GC_TTL=24h
PERAGO_WORKSPACE_GC_INTERVAL=1h
PERAGO_SHUTDOWN_FORCE_KILL_AFTER=30s
命令要求#
命令 |
连接变量要求 |
会探测本机目录吗 |
说明 |
|---|---|---|---|
|
否 |
是 |
可在没有 Conductor/LakeFS 的本机环境中检查 task module 和配置。 |
|
否 |
是 |
可生成 TaskDef JSON;连接变量不会写入 TaskDef。 |
|
|
是 |
启动前会导入 task module;workspace-free task 不需要 LakeFS 连接变量。 |
如果只配置了部分 LakeFS 变量,三个命令都会在加载 runtime config 阶段失败;这是为了避免部署环境带着半套连接配置继续运行。
metrics-enabled task 还会读取第一版支持的 OTLP metrics 环境变量:
变量 |
状态 |
默认值 |
读取位置 |
校验和说明 |
|---|---|---|---|---|
|
required for metrics-enabled |
无 |
|
只支持 metrics-specific endpoint,Perago 不读取 |
|
optional |
unset |
|
第一版只接受 |
|
optional |
OTel Python exporter 默认值 |
|
按 OpenTelemetry 环境变量语义解析为正整数毫秒,例如 |
|
optional |
OTel SDK 默认值 |
|
正整数毫秒,例如 |
第一版明确不支持 OTEL_EXPORTER_OTLP_METRICS_HEADERS、OTEL_SERVICE_NAME、OTEL_RESOURCE_ATTRIBUTES 和 OTEL_EXPORTER_OTLP_ENDPOINT;配置这些变量会在 runtime config 阶段失败。
如果 task 声明了 MetricSpec(worker_capacity=True),perago start 还要求 PERAGO_INSTANCE_ID。process mode 的 runtime.busy_slots 只由 broker 汇总 executor slot state 后导出一次;executor process 和 supervisor parent 不导出 busy slots。thread mode 由运行 TaskRunner 的 worker runtime owner 导出一次。
perago start 还会在 PERAGO_WORKSPACE_ROOT 下创建 .perago-supervisor.lock,锁内容包含当前 supervisor pid。已有活 pid 锁时,启动会失败并提示为每个 supervisor 使用不同的 PERAGO_WORKSPACE_ROOT;崩溃遗留的死 pid 锁会在启动时被替换。
常见错误文本#
错误文本 |
触发条件 |
修复 |
|---|---|---|
|
启动 worker 时未配置 Conductor endpoint。 |
在 |
|
启动 workspace task worker 时三个 LakeFS 变量都未配置。 |
workspace task 需要同时配置 LakeFS endpoint、access key id 和 secret access key;workspace-free task 不需要这些变量。 |
|
LakeFS 三个变量只配置了一部分。 |
同时配置 endpoint、access key id 和 secret access key;如果当前命令和 task 类型不需要 LakeFS,就三个变量全部省略。 |
|
连接变量仍是 |
用真实部署值替换 |
|
日志文件大小格式无效。 |
使用正数和 |
|
日志保留期格式无效。 |
使用 |
|
worker id prefix 含有连字符、下划线、点号或非 ASCII 字符。 |
改成只含字母和数字的前缀,例如 |
|
Perago instance id 含空格或其他非法字符。 |
使用低基数部署实例名,例如 |
|
metrics-enabled task 默认开启 |
在 Nomad 或 |
|
metrics-enabled task 启动时未配置 OTLP metrics endpoint。 |
配置 metrics-specific endpoint,例如 |
|
timeout 写成了 |
使用正整数毫秒,例如 |
|
export interval 不是正整数毫秒。 |
使用毫秒整数,例如 |
|
execution mode 超出支持范围。 |
使用默认 |
|
failure reason 长度上限不是整数。 |
使用正整数,例如 |
|
failure reason 长度上限为 |
使用大于零的整数。 |
|
workspace GC TTL 格式非法。 |
使用 |
|
workspace GC interval 格式非法。 |
使用 |
|
shutdown force-kill deadline 格式非法。 |
使用 |