读取 Airflow rest API 在脚本中传递了 conf
Reading Airflow rest API passed conf in script
您好,我正在尝试使用实验性 Airflow 休息 API。下面是我的 Dag 定义:
from airflow import DAG
from airflow.operators import BashOperator,PythonOperator
from datetime import datetime, timedelta
seven_days_ago = datetime.combine(datetime.today() - timedelta(7),
datetime.min.time())
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': seven_days_ago,
'email': ['airflow@airflow.com'],
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(minutes=5),
}
dag = DAG('python_test', default_args=default_args)
t1 = BashOperator(
task_id='testairflow',
bash_command='python ${AIRFLOW_HOME}/dags/python_test.py',
dag=dag)
下面是我的脚本,它只是读取传递的参数并打印它。
import argparse
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Argument... ')
parser.add_argument('--env', metavar='path', required=True, default='dev', help='Execution Environment')
parser.add_argument('--config_path', required=True, help='Custom config s3 path..')
parser.add_argument('--data_lake_bucket', required=False, default="s3://dl_bucket")
args = parser.parse_args()
print("--------------------------------------")
print(args.env)
print(args.config_path)
print(args.data_lake_bucket)
print("--------------------------------------")
下面是我触发它的 curl 命令。
curl -X POST \
http://localhost:8080/api/experimental/dags/python_test/dag_runs \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
-d '{"conf":"{\"--env\":\"dev\", \"--config_path\":\"this_is_conf\"}"}'
我想弄清楚如何在 python 脚本或任何其他作业中使用 -d 读取传递的参数?目前我看到作业正在被触发,但没有读取参数。
实验性 API 已在 Airflow 2 中弃用,并将在 Airflow 3 中删除。我衷心建议切换到 Airflow 2 并切换到成熟的 REST API,它已实现为Airflow 2 工作的一部分,提供了相当全面、结构良好、文档化的 REST API 以及您能想象到的所有功能。它是用 OpenAPI 规范构建的,它有 Swagger UI,身份验证支持,我们甚至生成了 Python 客户端来使用 API:https://github.com/apache/airflow-client-python.
而且它是“稳定的”并遵循 Airflow 2 SemVer 版本控制,因此只要您使用 Airflow 2,就可以保证向后兼容。
https://airflow.apache.org/docs/apache-airflow/stable/stable-rest-api-ref.html
Airflow 1.10(如果您仍在使用它)已于 6 月 17 日终止使用,并且不会再收到任何修复(即使是关键修复)。事实上,Airflow 2 中已经有安全修复程序,但尚未(也不会)向后移植到 1.10,因此现在是升级的最佳时机。
您还可以观看 Airflow 峰会的讨论面板,了解为什么您应该升级 https://airflowsummit.org/sessions/2021/panel-airflow-security/
您好,我正在尝试使用实验性 Airflow 休息 API。下面是我的 Dag 定义:
from airflow import DAG
from airflow.operators import BashOperator,PythonOperator
from datetime import datetime, timedelta
seven_days_ago = datetime.combine(datetime.today() - timedelta(7),
datetime.min.time())
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': seven_days_ago,
'email': ['airflow@airflow.com'],
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(minutes=5),
}
dag = DAG('python_test', default_args=default_args)
t1 = BashOperator(
task_id='testairflow',
bash_command='python ${AIRFLOW_HOME}/dags/python_test.py',
dag=dag)
下面是我的脚本,它只是读取传递的参数并打印它。
import argparse
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Argument... ')
parser.add_argument('--env', metavar='path', required=True, default='dev', help='Execution Environment')
parser.add_argument('--config_path', required=True, help='Custom config s3 path..')
parser.add_argument('--data_lake_bucket', required=False, default="s3://dl_bucket")
args = parser.parse_args()
print("--------------------------------------")
print(args.env)
print(args.config_path)
print(args.data_lake_bucket)
print("--------------------------------------")
下面是我触发它的 curl 命令。
curl -X POST \
http://localhost:8080/api/experimental/dags/python_test/dag_runs \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
-d '{"conf":"{\"--env\":\"dev\", \"--config_path\":\"this_is_conf\"}"}'
我想弄清楚如何在 python 脚本或任何其他作业中使用 -d 读取传递的参数?目前我看到作业正在被触发,但没有读取参数。
实验性 API 已在 Airflow 2 中弃用,并将在 Airflow 3 中删除。我衷心建议切换到 Airflow 2 并切换到成熟的 REST API,它已实现为Airflow 2 工作的一部分,提供了相当全面、结构良好、文档化的 REST API 以及您能想象到的所有功能。它是用 OpenAPI 规范构建的,它有 Swagger UI,身份验证支持,我们甚至生成了 Python 客户端来使用 API:https://github.com/apache/airflow-client-python.
而且它是“稳定的”并遵循 Airflow 2 SemVer 版本控制,因此只要您使用 Airflow 2,就可以保证向后兼容。
https://airflow.apache.org/docs/apache-airflow/stable/stable-rest-api-ref.html
Airflow 1.10(如果您仍在使用它)已于 6 月 17 日终止使用,并且不会再收到任何修复(即使是关键修复)。事实上,Airflow 2 中已经有安全修复程序,但尚未(也不会)向后移植到 1.10,因此现在是升级的最佳时机。
您还可以观看 Airflow 峰会的讨论面板,了解为什么您应该升级 https://airflowsummit.org/sessions/2021/panel-airflow-security/