当我运行气流时,不会创建任何任务

时间:2019-12-10 12:19:05

标签: task airflow directed-acyclic-graphs

我有一个问题,演示非常简单,但是在气流上部署后,执行无法达到预期的效果。这是我的代码

"""
import pytz
from airflow import DAG
from datetime import datetime, timedelta

from airflow.operators.latest_only_operator import LatestOnlyOperator
from airflow.operators.python_operator import PythonOperator

tz = pytz.timezone('Asia/Shanghai')
dt = datetime.now(tz)
utc_dt = dt.astimezone(pytz.utc).replace(tzinfo=None)

default_args = {
    'owner': 'syroot',
    "start_date": utc_dt - timedelta(minutes=2),
    "depends_on_past": False,
    'email': ['zhaosw@sunnyoptical.com'],
    'email_on_failure': False,
    'email_on_retry': False,
    "retries": 1,
    "retry_delay": timedelta(seconds=5)
}

dag = DAG(
    "demo1",
    catchup=False,
    default_args=default_args,
    schedule_interval="*/2 * * * *",
)


def print_hello():
    return 'Hello world!'


hello_operator = PythonOperator(
    task_id='hello_task',
    python_callable=print_hello,
    dag=dag)

"""

但是结果不是很好,dag运行成功,但是没有创建任务。我在任务实例菜单中找不到任何信息,但是在DAG运行菜单中可以找到dag运行日志。

enter image description here

2 个答案:

答案 0 :(得分:1)

由于您的动态开始日期,我认为您的调度程序无法运行DAG。

尝试将"start_date": utc_dt - timedelta(minutes=2),更改为静态日期,例如"start_date": datetime(2019,12,9),。那应该允许调度程序将其提取!

通常建议不要动态设置起始日期。

来自Airflow常见问题解答:

  

我们建议不要将动态值用作开始日期,尤其是   datetime.now(),因为它可能会令人困惑。任务被触发   一旦周期结束,理论上@hourly DAG就永远不会   now()沿现在移动到一个小时后。

答案 1 :(得分:0)

您必须指定要执行的任务。看来您失踪了:

2

在您的DAG中:

hello_operator