인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

미요님의 프로필 이미지

작성한 질문수

Airflow 마스터 클래스

airflow rest api

작성

·

39

0

강사님 안녕하세요. airflow의 rest api를 이용하여 task를 재실행하는 코드를 개발하는 중 궁금한 점이 생겨서 문의드립니다. (참고로 실행환경은 회사pc입니다)

 

~/v1/dags/{dag_id}/dagRuns/{execution_date}/taskInstances/{task_id}/clear

위와같이 특정 task의 실행 시간으로 실행하면 404에러가 뜨고
"detail": "The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.", "status": 404, "title": "Not Found", "type": "about:blank"

 

REST-API문서를 살펴보니 clearTaskInstances가 있어서

~/api/v1/dags/{dag_id}/clearTaskInstances

이렇게 조회하면 405 에러가 뜹니다.
"detail": "The method is not allowed for the requested URL.", "status": 405, "title": "Method Not Allowed", "type": "about:blank"

 

 

/clear이든 /clearTaskInstances 둘다 작동하지 않은데, 방법이 있을까요?

두번째의 경우 서버에서 작동을 막는것일까요?

답변 2

0

김현진님의 프로필 이미지
김현진
지식공유자

안녕하세요 미요님!

혹시나 해서 해봤는데 둘 다 잘 동작했습니다.

먼저 첫 번째꺼는 404 에러라 URL 자체를 잘못작성하신 케이스에요.

curl -X POST "http://localhost:8080/api/v1/dags/dags_bash_operator/dagRuns/scheduled__2025-03-30T15:00:00+00:00/clear" \
  -H "Content-Type: application/json" \
  -u "airflow:airflow" \
  -d '{
        "dry_run": false
      }'

이렇게 Clear할 DagRun의 ID를 적고 /clear로 마치면 됩니다.

 

두번째 케이스는 기간별 한번에 DAG Clear할 수 있는 API 이고 URL은 잘 작성하신것 같은데 Method를 잘못주신거 아닌가 싶습니다. 저는 아래처럼 작성해서 잘 동작했어요.

curl -X POST "http://localhost:8080/api/v1/dags/dags_bash_operator/clearTaskInstances" \
  -H "Content-Type: application/json" \
  -u "airflow:airflow" \      
  -d '{
        "dry_run": false,
        "reset_dag_runs": true,
        "only_failed": false,
        "only_running": false,
        "include_subdags": true,
        "include_parentdag": true,
        "start_date": "2025-04-01T00:00:00Z",
        "end_date": "2025-04-05T00:00:00Z"
      }'

 

참고로 Airflow 공식 사이트에 API 정리가 잘 돼있습니다.

image.png

 

 

image.png

 

참고해보세요 ^^

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 미요님.

Airflow의 REST API를 활용하여 특정 task를 재실행하려고 할 때 발생하는 문제에 대해 문의 주셨군요. REST API 호출에서 발생하는 404와 405 에러는 주로 URL 설정이나 HTTP 메소드 사용에 문제가 있을 때 발생합니다. 아래에서 각각의 에러와 해결 옵션을 설명드리겠습니다.

1. 404 Error (Not Found)

  • 요청하신 URL이 존재하지 않을 때 발생합니다. 이 경우에는 URL을 정확하게 입력했는지 다시 확인하시기 바랍니다. 대소문자나 경로의 오타가 없는지, 입력한 파라미터들이 실제로 존재하는지 확인하세요.

  • Airflow의 REST API 버전이 맞는지, 서버 설정에서 API 엔드포인트가 활성화되어 있는지도 고려해야 합니다.

2. 405 Error (Method Not Allowed)

  • API 엔드포인트가 특정 HTTP 메소드(예: GET, POST, DELETE 등)를 지원하지 않을 때 발생합니다. 이 경우, 사용하려는 API 문서에서 지원하는 메소드를 확인하시고 적절하게 변경해야 합니다.

  • /api/v1/dags/{dag_id}/clearTaskInstances 는 일반적으로 POST 메소드를 사용하여 task instances를 지우게 되므로, 올바른 HTTP 메소드를 사용하고 있는지 확인합니다.

해결 방안

  1. API 문서 재확인: 사용하고 있는 Airflow의 버전에 맞는 공식 REST API 문서를 꼭 확인하시고, 올바른 경로와 메소드를 사용했는지 점검합니다.

  2. 대체 메소드 사용: 만약 REST API에 직접 접근하는 것이 여의치 않다면, Airflow CLI 명령어나 Python API를 사용하여 task를 재실행하는 방법도 고려해 보세요.

  3. 서버 설정 확인: 회사 내부 정책에 따라 특정 엔드포인트나 메소드가 제한될 수 있습니다. 이런 경우 관련 IT 부서에 문의하여 서버 설정을 확인해야 합니다.

관련 질문과 해결 방법에 대한 토론이 포함된 이 게시물을 참고하시면 좀 더 구체적인 문제 해결에 도움이 되실 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

미요님의 프로필 이미지

작성한 질문수

질문하기