我在 2015 年初配备 3.1 GHz Intel Core i7 处理器和 16GB 或 RAM 的 MacBook Pro 上运行具有 +400 个任务的 Airflow 进程。
我正在运行的脚本看起来很像这样,不同之处在于我将 DAG 定义为
default_args = {
'start_date': datetime.now(),
'max_active_runs': 2
}
尽量避免并行触发太多任务。以下是我做这件事的一系列截图。我的问题是:
- 此操作会生成大量 python 进程。是否有必要以这种方式在 RAM 中定义整个任务队列,或者气流可以采取“随手生成任务”的方法来避免启动这么多进程。
- 我认为
max_active_runs
控制在任何给定时间实际有多少进程正在工作。不过,回顾我的任务,我将有几十个任务占用 CPU 资源,而其余任务则处于空闲状态。这真是低效,我该如何控制这种行为?
以下是一些屏幕截图:
事情有了一个足够好的开始,并行运行的进程比我预期的要多得多:
该过程基本上循环通过这些阶段,直到完成。最终的任务分解如下所示:
[2017-08-24 16:26:20,171] {jobs.py:2066} INFO - [backfill progress] | finished run 1 of 1 | tasks waiting: 0 | succeeded: 213 | kicked_off: 0 | failed: 200 | skipped: 0 | deadlocked: 0 | not ready: 0
有什么想法吗?