Luigi 编程配置

tre*_*son 4 python-3.x luigi

我在我的工作流程中使用了类似于以下内容的配置文件luigi

# Luigi logging configuration
[logging]
version = 1
disable_existing_loggers = false

[logging.formatters.simple]
format = "{levelname:8} {asctime} {module}:{lineno} {message}"
style = "{"
datefmt = "%Y-%m-%d %H:%M:%S"

# Luigi contrib configurations
[postgres]
marker-table="luigi_table_updates"
Run Code Online (Sandbox Code Playgroud)

然后luigi像这样从命令中调用:

# Luigi logging configuration
[logging]
version = 1
disable_existing_loggers = false

[logging.formatters.simple]
format = "{levelname:8} {asctime} {module}:{lineno} {message}"
style = "{"
datefmt = "%Y-%m-%d %H:%M:%S"

# Luigi contrib configurations
[postgres]
marker-table="luigi_table_updates"
Run Code Online (Sandbox Code Playgroud)

但是,我想以编程方式调用我的工作流程。我可以使用该luigi.build方法来做到这一点;但是,我尝试像这样传递我的配置路径:

LUIGI_CONFIG_PATH='path/to/luigi.toml' luigi ...
Run Code Online (Sandbox Code Playgroud)

并得到以下错误:

luigi.parameter.UnknownParameterException: core[args=(), kwargs={'local_scheduler': True, 'LUIGI_CONFIG_PATH': 'path/to/luigi.toml', 'no_lock': True}]: unknown parameter LUIGI_CONFIG_PATH
Run Code Online (Sandbox Code Playgroud)

我假设将它用作 kwarg 会将其加载到环境中,类似于luigi.build加载方式。env_paramslocal_scheduler

所以,我的问题是,以编程方式配置的适当方法是什么luigi

tre*_*son 5

我想通了;不确定是否有更好的方法,但我找到了一个加载配置的方法调用:

import luigi

luigi.configuration.add_config_path('path/to/my-config.cfg')
Run Code Online (Sandbox Code Playgroud)

然而,我没有找到指定解析器的方法,在阅读源代码后,我不确定目前是否可能。所以,我只是从 TOML 切换到 cfg,一切都很好。