airflow - 运行中的气流 dag 问题 - 循环运行计划
问题描述
我在计划中为远程 ssh 上的运行命令创建了这个 dag。
from datetime import timedelta
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from airflow.utils.dates import days_ago
from airflow.contrib.hooks.ssh_hook import SSHHook as sscon
from airflow.contrib.operators.ssh_operator import SSHOperator
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': days_ago(0),
'email': ['e@example.com'],
'email_on_failure': False,
'email_on_retry': False,
#'retries': 1,
#'retry_delay': timedelta(minutes=10),
}
dag = DAG(
'ssh_second',
default_args=default_args,
description='A simple bash DAG LAB',
schedule_interval=timedelta(minutes=1),
tags=['test'],
)
sshcon = sscon(remote_host="192.168.1.250", username="user", password="password", port=22)
t1 = BashOperator(
task_id='echo1',
bash_command='echo "simple task! by dag" ',
dag=dag,
)
t5 = SSHOperator(
task_id="remote-connection",
command="/bin/date >> /home/user/date.txt && echo 'from airflow' >> /home/user/date.txt",
ssh_hook=sshcon,
dag=dag)
t1 >> t5
它有效,但气流每秒都在运行,而且势不可挡。
我不知道问题出在哪里!
解决方案
你schedule_interval
每分钟都设置好:schedule_interval=timedelta(minutes=1)
这就是导致 DAG 执行如此频繁的原因。将 更新schedule_interval
为不太频繁的间隔。
另外,我强烈建议将其修改start_date
为静态值而不是动态值(例如days_ago(0)
)。当我开始使用 Airflow 时,本指南和其他指南非常有用。设置静态后start_date
,您可以设置catchup=False
是否不希望 DAG 从start_date
当前时间执行“丢失”运行。
推荐阅读
- android - 多级用户登录
- php - Excel 无法识别 PHP 制表符分隔的内容
- html - 在动态加载的内容上使用缓存控制“必须重新验证”的正确方法是什么?
- android - 进程“命令节点”以非零退出值 1 结束
- react-native - 在本机反应中将组件作为道具传递
- c# - CancelOperation 从 Umbraco 中的自定义事件处理程序中引发异常
- c - (2 - 4 = -1) 当 int 值分配给 C 中的指针时?
- sql - knex,加入和分组
- amazon-ec2 - AWS 的 tomcat bitnami 堆栈问题
- html - 在渐进式 Web 应用程序中显示带有水平滚动条的图像