airflow - 我们能否以某种方式使用一些技巧在气流中实现任务的循环运动?大多数情况下这是不可能的,但有什么办法吗?
问题描述
我知道它只允许非循环运动,但是有什么办法可以像我们以编程方式实现它吗?
解决方案
一种方法是让 DAG 重新触发自身:
from datetime import datetime
from time import sleep
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
from airflow.operators.dagrun_operator import TriggerDagRunOperator
DAG_ID = 'cycle_dag'
default_args = {
'owner': 'Airflow',
'start_date': datetime(2011, 1, 1, 1, 1),
}
with DAG(
dag_id=DAG_ID,
default_args=default_args,
schedule_interval="@once",
catchup=False,
max_active_runs=1, # We want only one running DAG at a time
) as dag:
do = PythonOperator(
task_id='do_some_work', python_callable=sleep, op_args=[10]
)
repeat = TriggerDagRunOperator(task_id='repeat', trigger_dag_id=DAG_ID)
do >> repeat
推荐阅读
- python - 使用 python 和 selenium 如何获取值不是 utf-8 的占位符的值?
- csv - 将目录中的所有 CSV 文件上传到 Google Cloud
- java - Hashmap 中的值的总和不正确。迭代 1000 次但总值等于 1021
- php - PHP Require 调用上的错误 404,由区分大小写的差异引起
- java - LinkedList 实现指针是基于 Java 的吗?
- python-3.x - 莎拉的报价函数
- java - 如何让 JTextArea 使用其关键事件?
- networking - 网络日志中的 WebRTC 数据包
- javascript - 如何从javascript中的3个对象数组中排序并获取最大值并将其分配给另一个数组?
- amazon-web-services - 我无法访问具有公共 IP 的网站