首页 > 解决方案 > 运行具有气流运行的 dag:错误:需要以下参数:task_id、execution_date

问题描述

鉴于我有一个easteregg.py文件:

from airflow import DAG

from dateutil import parser
from datetime import timedelta, datetime, time
from airflow.operators import PythonOperator
from airflow.operators.dummy_operator import DummyOperator
from easteregg import easteregg_workflows as wf

defaults = {
    'owner': "JohnDoe",
    'depends_on_past': False,
    'email': ['john.doe@mail.com'],
    'email_on_failure': True,
    'email_on_retry': False,
    'retries': 1,
    'retry_delay': timedelta(minutes=15),
    'start_date': parser.parse('2019-01-01 00:00:00')
}

dag = DAG('easteregg', default_args=defaults, 
    schedule_interval="*/5 * * * *")


step1 = PythonOperator(
    task_id="step1",
    python_callable=wf.run1,
    default_args=defaults,
    provide_context=True,
    pool="pool",
    dag=dag)

step0 = DummyOperator(
    task_id="step0",
    dag=dag)

step0 >> step1

文件很easteregg_workflows.py简单:

def run1(**kwargs):
    logging.info("Hello airflow 1")

我现在想简单地在气流上触发这项工作。于是我发出命令:

airflow run easteregg

但它给我一个错误airflow run: error: the following arguments are required: task_id, execution_date

我需要什么才能让这个 DAG 运行?

标签: airflow

解决方案


您的 dag 文件没有任何遗漏。 airflow run easteregg是一个不正确的命令。airflow run不跑。相反,它运行一个task_id

尝试airflow run -h使用。

usage: airflow run [-h] [-sd SUBDIR] [-m] [-f] [--pool POOL]
                   [--cfg_path CFG_PATH] [-l] [-A] [-i] [-I] [--ship_dag]
                   [-p PICKLE] [-int]
                   dag_id task_id execution_date

Airflow 需要 dag_id、task_id 和 execution_date

位置参数:
dag_id dag
的id task_id 任务的id
execution_date DAG 的执行日期

而不是运行 dag,您可以使用该trigger_dag命令。https://airflow.apache.org/cli.html

airflow trigger_dag easteregg

Usage:airflow trigger_dag [-h] [-sd SUBDIR] [-r RUN_ID] [-c CONF] [-e EXEC_DATE]
                    dag_id

推荐阅读