Airflow Scheduler为相同的dag创建PID以每次生成任务

时间:2018-05-08 07:38:01

标签: python airflow airflow-scheduler

我正在使用Local Executor。我有一种情况,我为每个请求ID生成了唯一的dags,例如1.py,2.py。

1.py假设有两个任务,2.py有3个任务。我也会定期收到更多dags,例如3.py,4.py等。

是否存在为每个新ID /请求ID创建dag的问题。

我观察到Scheduler不断提供此日志。

Started a process (PID: 92186) to generate tasks for /Users/nshar141/airflow/dags/3.py - logging into /Users/nshar141/airflow/logs/scheduler/2018-05-07/3.py.log

我的问题是调度程序为生成任务而不断生成单独的PID的原因。我尝试在配置中更改与并发和并行性相关的不同参数,但是调度程序似乎每次都对dags文件夹中存在的每个dag执行该语句。

我附上了我的dag定义。我想在它创建后立即运行dag。我应该在start_time和scheduler_interval中给出什么参数?

dag = DAG('3', description='Sample DAG',schedule_interval=@once,start_date=datetime(2018, 5, 07), catchup=False)

由于我需要使用唯一的dag id动态生成dags并将其放在dags文件夹中,因此我关注的是调度程序会为已经执行的文件夹中的每个dag生成过多的进程IDS。

Image showing scheduler generating PIDs repeatedly

1 个答案:

答案 0 :(得分:1)

为什么要为每个请求创建新的DAG?我认为最合适的方式是存储请求并让一个DAG以批处理方式同时为多个请求执行逻辑。如果需要,您可以经常运行DAG。

您似乎希望尽快执行任务。如果您对吞吐量很接近实时感兴趣,Airflow可能不合适,而您又想要使用消息队列。