我正在尝试使用带有SimpleHttpOperator的REST API自动调用。
以下是我可以进行的通话示例,并且效果很好。
curl -u username:password
-H "Content-Type: application/json"
-X POST
-d '{"job_id":10,"date":{"year":"2016","month":"10"}}'
https://MY_INSTANCE_NAME.cloud.databricks.com/api/2.0/jobs/run-now
现在,将SimpleHttpOperator生成的格式设置如下所示,并且效果很好:
t2 = SimpleHttpOperator(
task_id=TASK_ID,
http_conn_id=CONN_ID,
method='POST',
endpoint='api/2.0/jobs/run-now',
headers={"Content-Type": "application/json"},
data=json.dumps({"job_id":10, "date": { "year": "2016" , "month": "10" }}),
dag=dag
)
我现在正在尝试访问execution_date,这是一个由Airflow设置的变量,它允许操作员知道它被调用的时间。这通常可以使用BashOperator或PythonOperator的jinga模板访问,但不能使用SimpleHttpOperator:
e.g. """echo {{execution_date}}"""
此变量不适用于SimpleHttpOperator,非常需要它。如果你知道任何解决方法或在SimpleHttpOperator中访问它的方法,请告诉我。
感谢。
答案 0 :(得分:0)
SimpleHttpOperator中的日期字段接受jinja模板:
t2 = SimpleHttpOperator(
task_id=TASK_ID,
http_conn_id=CONN_ID,
method='POST',
endpoint='api/2.0/jobs/run-now',
headers={"Content-Type": "application/json"},
data="""{"job_id":"10", "date": { "year": {{code}}, "month": {{code}}{{'}}'}}""",
dag=dag
)