Python 使用Luigi管道时组织文件?
我正在使用Luigi作为我的工作流程。我的工作流程一般分为三个部分:导入、分析、导出。在每个部分中,都有多个Luigi任务 我可以把所有的东西都放在一个文件里。但是,如果我想将所有内容分开,比如在拥有Python 使用Luigi管道时组织文件?,python,class,dependencies,workflow,luigi,Python,Class,Dependencies,Workflow,Luigi,我正在使用Luigi作为我的工作流程。我的工作流程一般分为三个部分:导入、分析、导出。在每个部分中,都有多个Luigi任务 我可以把所有的东西都放在一个文件里。但是,如果我想将所有内容分开,比如在拥有data\u import.py、analysis.py和export.py时 例如,如果data\u import.py如下所示: import luigi class import_task_A(luigi.Task): def requires(self): retu
data\u import.py
、analysis.py
和export.py
时
例如,如果data\u import.py
如下所示:
import luigi
class import_task_A(luigi.Task):
def requires(self):
return []
def output(self):
return luigi.LocalTarget('myfile.txt')
def run(self):
my import stuff
if __name__ == '__main__':
luigi.run()
但是,如果export.py中的任务依赖于import.py中的任务,该怎么办。我会:
from data_import import import_task_A
import luigi
class export_task_A(luigi.Task):
def requires(self):
return import_task_A()
def output(self):
return luigi.LocalTarget('myfile.txt')
def run(self):
my import stuff
if __name__ == '__main__':
luigi.run()
如果我将较大的项目分解为多个
.py
文件,那么告诉Luigi哪些文件中包含哪些必需任务的最佳方法是什么?看起来这个方法会变得很麻烦。为什么会变得很麻烦?如果导出任务依赖于多个任务,则def要求将更改为:
def requires(self):
return [import_task_A(), import_task_B()]
顺便说一下,在这种情况下,您可能需要删除
if __name__ == '__main__':
luigi.run()
从您的数据_import.py。也可以在data_export.py中使用,而不是相同的
if __name__ == '__main__':
luigi.build([export_task_A()])
我不知道有没有办法。您要么需要有多个文件,要么需要在一个文件中包含多个类。你想如何组织你的项目,这是一个优先考虑的问题 要限制从中导入的位置数量,可以做的一件事是使用一个python文件来导入所需的所有Luigi类
#my_tasks.py
从数据导入任务
来自导出任务
然后在其他文件中,您可以从
my\u tasks
导入所需的任何内容。还考虑使用<代码> GATTARB或<代码> ILILIB < /代码>,以便在导入和访问类上有更大的灵活性。您的操作方式似乎很好。为什么会变得繁琐?