我正在尝试在 Airflow 中运行一个简单的 BASHOperator 任务。手动触发时,DAG 会在 Tree 和 Graph 视图中列出任务,但任务始终处于未启动状态。
我已经重新启动了我的 Airflow 调度程序。我在 Docker Compose 上使用 Kubectl 映像在本地主机上运行 Airflow。
from airflow import DAG
from airflow.operators.dummy_operator import DummyOperator
from airflow.operators.bash_operator import BashOperator
from datetime import datetime, timedelta
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'email': ['vijayraghunath21@gmail.com'],
'email_on_success': True,
'email_on_failure': True,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(minutes=2),
}
with DAG(
dag_id='bash_demo',
default_args=default_args,
description='Bash Demo',
start_date=datetime(2021, 1, 1),
# schedule_interval='0 2 * * *',
schedule_interval=None,
max_active_runs=1,
catchup=False,
tags=['bash_demo'],
) as dag:
dag.doc_md = __doc__
# Task 1
dummy_task = DummyOperator(task_id='dummy_task')
# Task 2
bash_task = BashOperator(
task_id='bash_task', bash_command="echo 'command executed from BashOperator'")
dummy_task >> bash_task
答案 0 :(得分:1)
如您添加的图像所示,DAG 设置为关闭,因此它没有运行。您应该点击切换按钮将其设置为开启。
可以通过两种方式避免此问题:
全局解决方案 - 如果您愿意在 dags_are_paused_at_creation = False
中设置 airflow.cfg
- 这将影响系统中的所有 DAG。
本地解决方案 - 如果您将在 DAG 承包商中使用 is_paused_upon_creation
:
with DAG(
dag_id='bash_demo',
...
is_paused_upon_creation=False,
) as dag:
此参数指定第一次创建 dag 时是否暂停。如果 dag 已存在,则忽略该参数。