Как запустить Airflow Dag с помощью REST API - PullRequest
0 голосов
/ 04 марта 2020

Я пытаюсь активировать воздушные потоки, следуя https://airflow.apache.org/docs/stable/api.html этому сайту. Они предоставили команду curl curl -X POST \ http://localhost:8080/api/experimental/dags/<DAG_ID>/dag_runs \ -H 'Cache-Control: no-cache' \ -H 'Content-Type: application/json' \ -d '{"conf":"{\"key\":\"value\"}"}' для запуска Dag. Это работает, когда я выполняю эту команду из моей оболочки.

Я пытался вызвать эту конечную точку в Go POST /api/experimental/dags/<DAG_ID>/dag_runs и получаю 400 Bad Request

Как использовать POST /api/experimental/dags/<DAG_ID>/dag_runs как http.POST() или http.NewRequest() в Go?

Я пробовал это:

package main

import (
    "encoding/json"
    "fmt"
    "net/http"
    "strings"
)
func main(){
    body := strings.NewReader(`{"conf":"{\"key\":\"value\"}"}`)
    req, err := http.NewRequest("POST", "http://localhost:8080/api/experimental/dags/airflow_sample/dag_runs", body)
    if err != nil {
        fmt.Println(err)
    }
    req.Header.Set("Cache-Control", "no-cache")
    req.Header.Set("Content-Type", "application/json")

    resp, err := http.DefaultClient.Do(req)
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println(resp)
    defer resp.Body.Close()
}

1 Ответ

0 голосов
/ 04 марта 2020

Я решил это.

В основной функции -

Я изменил body := strings.NewReader(`{"conf":"{\"key\":\"value\"}"}`)

На это body := strings.NewReader(`{}`)

Работало как Charm.

...