我创建了一个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)
提前谢谢
答案 0 :(得分:0)
我看到的第一个问题是您使用的是动态start_date
。我这样做时已经看到了一些奇怪的行为,我认为这是基于气流保持其过去的dagruns列表的方式。尝试指定固定的start_date
并查看是否可以解决任何问题。
在任何一种情况下,气流文档advise against dynamic start dates(向下滚动一下并阅读start_date
的说明。)
编辑:同时查看this以获取更多信息。