所以这是一个愚蠢的想法......
我在气流中创建了(很多)DAG ...并且它可以工作......但是,我想以某种方式将其打包以便我可以在没有安装气流的情况下运行单个DAG Run;即拥有它自己,所以我不需要所有的网络服务器,数据库等。
我主要使用触发器dag实例化新的DAG Run,并且我注意到运行气流的开销看起来很高(工作人员有很高的负载基本上什么也没做,有时可能需要10秒钟在依赖任务排队等之前。)
我对所有的伐木等都不太感兴趣。
答案 0 :(得分:1)
听起来你的主要关注点是空转工人浪费资源,而不是浪费Airflow本身。
我建议在一个盒子上使用LocalExecutor运行Airflow。这将为您提供并发执行的好处,而无需管理员工的麻烦。
对于数据库 - 如果不修改气流源本身,就无法删除数据库组件。另一种方法是将SequentialExecutor与SQLite结合使用,但这样就无法运行并发任务,也不建议用于生产。
答案 1 :(得分:0)
首先,我想说您需要调整气流设置。
但是,如果这不是一个选择,那么另一种方法是在DAG之外的代码中编写您的主要逻辑。 (这也是最佳做法)。对我来说,这也使代码更易于在本地进行测试。
编写shell脚本很容易将几个进程联系在一起。
您不会从运算符或依赖项中受益,但是您可以编写脚本来解决它。如果不能,请使用Airflow。
答案 2 :(得分:0)
您可以创建一个执行气流操作员的脚本,尽管这会丢失气流提供的所有元数据。您仍然需要将Airflow安装为Python软件包,但不需要运行任何网络服务器等。一个简单的示例如下所示:
from dags.my_dag import operator1, operator2, operator3
def main():
# execute pipeline
# operator1 -> operator2 -> operator3
operator1.execute(context={})
operator2.execute(context={})
operator3.execute(context={})
if __name__ == "__main__":
main()