2017-03-10 1 views
0

Airflow를 처음 사용합니다. 스케줄에 대한 Airflow 문서의 모든 기사를 읽은 것 같지만 start_date + schedule_interval 이후 (즉, 작업 인스턴스 없음)에 DAG가 계속 실행되지 않는 것으로 보입니다. 나는 도커를 사용하고있다. 나는 이것이 튜토리얼 코드를 사용할 때가 아니더라도 Dags를 스케줄하는 명령이 빠져 있다는 것을 궁금해하고있다.Airflow Docker 배치 : Start_date + schedule_interval 후 작업이 실행되지 않음

여기 내 도커 파일입니다.

FROM ubuntu:latest 
FROM python:3 

RUN apt-get update -y 
RUN apt-get install -y python-pip python-dev apt-utils build-essential 
RUN pip install --upgrade pip 

# Installs these and a few others 
# mysqlclient==1.3.10 
# airflow==1.7.1.3 
COPY dependencies /dependencies 
RUN pip install -r dependencies/requirements_loader.txt 

COPY airflow /root/airflow 

# Load other dependencies 


# I have tried many different variation of these commands with no luck 
CMD airflow webserver -p 8080 
CMD airflow scheduler -d DAG_id 

필자가 작성한 라이브러리를로드하는 모듈과 함께 PythonOperator를 사용하고 있습니다. 이것이 올바른 방법인지 잘 모르겠지만, 작동은 airflow test dag_id execution_date입니다. 이것은 나에게 가장 특이한 것입니다. 테스트는 작동하지만 공기 흐름을 시작할 때 실제로 작동하지 않습니다. LocalExecutor를 사용하고 있습니다. 여기에 내 거물이있다.

from airflow import DAG 
from airflow.operators.python_operator import PythonOperator 
from datetime import datetime, timedelta 
from my_lib import my_func 

default_args = { 
    'owner': 'airflow', 
    'depends_on_past': False, 
    'start_date': datetime(2017, 3, 6), 
    'email_on_failure': False, 
    'email_on_retry': False, 
    'email': ['[email protected]'], 
    'retries': 1, 
    'retry_delay': timedelta(minutes=5) 
} 


dag = DAG('dag_id', default_args=default_args, schedule_interval="31 2 * * *") 

t1 = PythonOperator(
    dag=dag, 
    task_id='run_my_func', 
    provide_context=False, 
    python_callable=my_func) 

나는 또한 일정 간격으로 주위를 엉망와 @daily 간격으로 한 달 전에 시작 날짜를 포함하는 날짜를 시작했다. 이들 중 어느 것도 나의 운을주지 못했다.

실제로 난처한 것은 내가 작동하는 dag를 테스트 할 때 작동하지만 스케줄 된 상태가 아니며 배포 된 후 task_instances를 생성한다는 것입니다.

사람이 올바른 방향을 지정하여 올바르게 배치 할 수 있습니까? 내가 뭘 잘못하고 있니?

+1

당신은 당신의 DAG를 켠? 예를 들어이 이미지 (https://i.imgur.com/GkvqvLb.png)를보십시오. 대시가 켜져 있습니다. – nehiljain

+0

참고로 공기 흐름 활성화 논리에서 많은 불일치가 발견되었습니다. 우리 대부분이 생각하는대로 작동하지 않습니다. 왜 무언가가 시작되지 않는지 이해하려면 코드를 파헤쳐 야합니다. 기류의 개념은 훌륭하지만 현재의 구현은 매우 이상한 IMHO입니다. –

+0

@nehiljain 나는 실제로 내가 dags를 켤 수있는 곳을 보지 못한다. http://imgur.com/a/tSwOi 내가 빠진 것이 있습니까? – jhilliar

답변

0

문제는 dockerfile의 끝에 두 개의 CMD 명령을 사용할 수 없다는 것입니다. 도커가 작성된 두 개의 도킹 파일을 만들면 제대로 작동합니다.

Dockerfile에는 하나의 CMD 명령 만있을 수 있습니다. 둘 이상의 CMD를 나열하면 마지막 CMD 만 적용됩니다. 웹 UI에서

https://docs.docker.com/engine/reference/builder/#cmd

관련 문제