在运行时生成 luigi 配置值(不将它们添加到任务参数中)
Generate luigi config values at runtime (without adding them to parameters of tasks)
所以,我知道我们可以通过扩展来创建配置 类
luigi.Config
,但是有没有办法在运行时生成配置值?
例如,我将如何做这样的事情:
def main():
new_default_value = fetch_new_default_value()
config = MyConfigClass()
config.value = new_default_value
luigi.build(MyTask())
并让 config.value 保持 new_default_value 的持续时间
执行?另外,是否可以在 requires 的定义中更改它
任务,即在执行期间更改设置值?
config.value
如何与 MyTask
互动?您没有理由不能在您的 Luigi 任务中引用它。
class MyTask(luigi.Task):
def requires(self):
new_default_value = fetch_new_default_value()
return SomeOtherTask(param=new_default_value)
def run(self):
config = MyConfigClass()
# do something that references config attributes
更新:另一种方法是将 config
作为参数传入。
class MyTask(luigi.Task):
config = luigi.DictParameter()
def requires(self):
return SomeOtherTask(param=self.config.value)
def run(self):
do_something(self.config.value)
config = MyConfigClass()
config.value = fetch_new_default_value()
job = MyTask(config=vars(config)) # assuming that vars() produces a dict
luigi.build([job])
所以,我知道我们可以通过扩展来创建配置 类
luigi.Config
,但是有没有办法在运行时生成配置值?
例如,我将如何做这样的事情:
def main():
new_default_value = fetch_new_default_value()
config = MyConfigClass()
config.value = new_default_value
luigi.build(MyTask())
并让 config.value 保持 new_default_value 的持续时间 执行?另外,是否可以在 requires 的定义中更改它 任务,即在执行期间更改设置值?
config.value
如何与 MyTask
互动?您没有理由不能在您的 Luigi 任务中引用它。
class MyTask(luigi.Task):
def requires(self):
new_default_value = fetch_new_default_value()
return SomeOtherTask(param=new_default_value)
def run(self):
config = MyConfigClass()
# do something that references config attributes
更新:另一种方法是将 config
作为参数传入。
class MyTask(luigi.Task):
config = luigi.DictParameter()
def requires(self):
return SomeOtherTask(param=self.config.value)
def run(self):
do_something(self.config.value)
config = MyConfigClass()
config.value = fetch_new_default_value()
job = MyTask(config=vars(config)) # assuming that vars() produces a dict
luigi.build([job])