如何在气流dag之间管理python软件包?

问题描述 投票:3回答:2

如果我有多个气流依赖项,并且它们之间存在一些重叠的python软件包依赖项,那么如何保留每个项目部门。解耦?例如。如果我在同一台服务器上有项目A和B,我将使用类似...的方式运行它们中的每一个

source /path/to/virtualenv_a/activate
python script_a.py
deactivate
source /path/to/virtualenv_b/activate
python script_b.py
deactivate

[基本上,希望在相同的情况下运行dag(例如,每个dag使用的Python脚本可能具有重叠的程序包deps。我想单独开发(即,在需要时不必使用程序包更新所有代码仅针对一个项目更新软件包))。注意,我一直在使用BashOperator运行python任务,例如...

do_stuff = BashOperator(
        task_id='my_task',
        bash_command='python /path/to/script.py'),
        execution_timeout=timedelta(minutes=30),
        dag=dag)

是否有办法使它正常工作?气流是否有其他旨在让人们解决(或避免)此类问题的最佳实践方法?

如果我有多个气流依赖项,并且它们之间存在一些重叠的python软件包依赖项,那么如何保留每个项目部门。解耦?例如。如果我在同一台服务器上有项目A和B,则将运行... ...>

airflow
2个回答
0
投票

您可以使用打包的dag,其中每个dag都依赖于其打包http://airflow.apache.org/concepts.html#packaged-dags


0
投票

基于apache-airflow邮件列表的讨论,最简单的解决我使用各种python脚本执行任务的模块化方式的方法是,直接为每个脚本或模块调用virtualenv python解释器二进制文件,例如。

© www.soinside.com 2019 - 2024. All rights reserved.