动态创建的任务/ dag在apache气流中不起作用

时间:2016-09-06 06:47:35

标签: python airflow

我创建了一个DAG,其中包含@daily间隔和每个工作流程的单独任务ID。但它没有像例外那样运行。有可能这样做吗?有没有其他方法可以为特定的dag创建动态任务?并使用命令行暂停特定任务实例?

from __future__ import print_function
from builtins import range
from airflow.operators import PythonOperator,DummyOperator,BranchPythonOperator,SqlSensor
from airflow.models import DAG
from datetime import datetime, timedelta

import time
from pprint import pprint

seven_days_ago = datetime.combine(
        datetime.today() - timedelta(7), datetime.min.time())

args = {
    'owner': 'varakumar',
    'start_date': seven_days_ago,
}

dag = DAG(
    dag_id='dynamic_task_creation', default_args=args,
    schedule_interval="@daily")

def get_decision():
    return "right"

start = DummyOperator(
    task_id='start',
    dag=dag)

td=datetime.today()
x=str(datetime(td.year,td.month,td.day,td.hour,td.minute,td.second)).replace (" ", "_").replace (":", "-")
pause_task_id = ("pause-%s" % x)

pause = DummyOperator(
    task_id=pause_task_id,
    dag=dag)
pause.set_upstream(start)

decision = BranchPythonOperator(
    task_id='decision',
    python_callable=lambda: get_decision(),
    dag=dag)
decision.set_upstream(pause)

left = DummyOperator(
    task_id='left',
    dag=dag)
left.set_upstream(decision)

right = DummyOperator(
    task_id='right',
    dag=dag)
right.set_upstream(decision)

提前谢谢

1 个答案:

答案 0 :(得分:0)

我看到的第一个问题是您使用的是动态start_date。我这样做时已经看到了一些奇怪的行为,我认为这是基于气流保持其过去的dagruns列表的方式。尝试指定固定的start_date并查看是否可以解决任何问题。

在任何一种情况下,气流文档advise against dynamic start dates(向下滚动一下并阅读start_date的说明。)

编辑:同时查看this以获取更多信息。