【问题标题】:How to permanently set a local Prefect config file?如何永久设置本地 Prefect 配置文件?
【发布时间】:2020-08-26 08:07:53
【问题描述】:

根据PrefectConfiguration guide,我已经通过export PREFECT__USER_CONFIG_PATH="./config.toml" 设置了一个本地配置文件(即在我当前的工作目录中),但是,这需要在每个shell 会话中设置环境变量。

我尝试使用 prefect.config.user_config_path = "./config.toml" 在 Python 脚本中设置配置,但这似乎与 export 加载配置文件的方式不同,因为:

(来自 docs)“配置文件在 Prefect 首次导入时进行解析,并在 prefect.config 中作为活动对象提供。”

对于我的假人config.toml 数据:

[api]
host = "localhost"
port = "5432"
url = "https://${api.host}:${api.port}"

prefect.config 通过环境变量:

...'task_runner': {'default_class': 'prefect.engine.task_runner.TaskRunner'}}, 'api': {'host': 'localhost', 'port': 5432, 'url': 'https://localhost:5432'}, 'user_config_path': './config.toml'}>

prefect.config 通过脚本:

...'task_runner': {'default_class': 'prefect.engine.task_runner.TaskRunner'}}, 'user_config_path': './config.toml'}>

所以config.toml 变量不会在第二种情况下加载

有什么想法吗?

(应用程序:我想在我的本地 config.toml 文件中设置一个“完美”秘密,隐藏在源代码管理中)

【问题讨论】:

    标签: prefect


    【解决方案1】:

    您是否有理由将config.toml 文件放在当前工作目录中?用户配置文件的默认位置是~/.prefect/config.toml,因此如果您将配置放在那里,它无需额外设置即可工作。

    如果您确实需要当前工作目录中的配置文件,您可以尝试将 export 语句添加到您的 ~/.bashrc(或您可能需要的任何 shell 等效项),以便它始终在您的环境中。

    【讨论】:

    • 感谢@chriswhite,它会成功的!在库的基本目录(例如drem)而不是 homedir 中使用config.toml 的一个用例是启用特定于库的config.toml 秘密或其他,并通过保留在 Python/toml 中来避免更改 ~/.bashrc 等价物.我正在考虑提示用户输入他们的电子邮件(一个秘密)并将其存储在本地 config.toml - 我想这不是一个紧急的用例!
    【解决方案2】:

    这有点小技巧 - python-dotenv 可用于设置本地 env 文件(这里称为 .prefect 而不是 .env)用于特定于目录的配置:

    $cat .prefect
    PREFECT__FLOWS__CHECKPOINTING=True
    
    >> import os
    >> from dotenv import load_dotenv
    >> load_dotenv(".prefect")
    True
    >> os.getenv("PREFECT__FLOWS__CHECKPOINTING")
    "True"
    >> import prefect; prefect.context.config.flows["checkpointing"]
    True
    

    警告:必须在导入 prefect 之前调用 load_dotenv(".prefect")

    import dotenv
    dotenv.load_dotenv(".prefect")
    import prefect
    

    或者.prefect 可以链接到本地​​user configuration file

    【讨论】:

      猜你喜欢
      • 2015-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多