Python 如何根据气流中的不同天数为同一DAG设置不同的时间表
我有两个像这样定义的DAGPython 如何根据气流中的不同天数为同一DAG设置不同的时间表,python,cron,airflow,airflow-scheduler,Python,Cron,Airflow,Airflow Scheduler,我有两个像这样定义的DAG my_dag= DAG('my_dag_thu_and_friday', catchup=False, default_args=default_args, schedule_interval='0 12,13,15,19 * * THU,FRI' ) 它们运行相同的运算符和相同的代码,但只是根据是星期四/星期五还是星期六/星期日而按不同的时间表运行。是否有一种方法可以指定cron
my_dag= DAG('my_dag_thu_and_friday',
catchup=False,
default_args=default_args,
schedule_interval='0 12,13,15,19 * * THU,FRI'
)
它们运行相同的运算符和相同的代码,但只是根据是星期四/星期五还是星期六/星期日而按不同的时间表运行。是否有一种方法可以指定cron间隔,使我只有一个DAG有条件地处理调度
感谢目前还没有干净简单的解决方案,但是我们将解决这个问题,因此在未来的气流版本中,这应该变得很容易 目前,您的选择是:
'012,13,15,17,19**THU,FRI,SAT,SUN'
放置分支运算符来创建1个DAG,以确定是否应执行DummyOperator
或您的运算符。因此,例如,在THU
气流中运行17
,将执行DummyOperator(因此不执行任何操作)谢谢选项3听起来不错,我会用它
my_dag= DAG('my_dag_sat_and_sun',
catchup=False,
default_args=default_args,
schedule_interval='0 13,17 * * SAT,SUN'
)
def create_dag(dag_id, schedule, default_args):
dag = DAG(
dag_id,
schedule_interval=schedule,
default_args=default_args)
with dag:
task = BashOperator(task_id='my_task')
return dag
list_of_dags = [
('my_dag_thu_and_friday', '0 12,13,15,19 * * THU,FRI'),
('my_dag_sat_and_sun', '0 13,17 * * SAT,SUN')
]
default_args = {'owner': 'airflow', ...}
for dag_item in list_of_dags:
dag_id = dag_item[0]
dag_schedule = dag_item[1]
globals()[dag_id] = create_dag(
dag_id,
dag_schedule,
default_args
)