我有一个问题,演示非常简单,但是在气流上部署后,执行无法达到预期的效果。这是我的代码
"""
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运行日志。
答案 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