airflow - 运行具有气流运行的 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 运行?
解决方案
您的 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
推荐阅读
- firebase - 在 UI Firebase Auth Flutter 中显示异常错误
- python - 使用 python madlibs 程序自动化无聊的东西
- r - 具有多个 bin 和组的直方图
- google-cloud-firestore - Firestore:我们不能在使用 whereIn 过滤的字段上使用 orderBy 吗?
- javascript - 使用 HttpClient 和 Angular 将表单发布到 FormSubmit
- python - 如何检测玩家和方块之间的碰撞?游戏
- pandas - 将 nan 值替换为 -99999 是否有意义?
- php - 如何减少php中的if条件?
- python - 在网页或其他应用程序中使用 Python 结果 - 数据科学
- r - 返回数据帧列表中两个字符串之间的值 [R]