2017-03-10 12 views
0

エアフローが初めてです。スケジューリングに関するAirflowドキュメントのすべての記事を読んだと思いますが、start_date + schedule_interval(つまりタスクインスタンスなし)の後もDAGを実行できないようです。私はドッカーを使用しています。私はそれが私はチュートリアルのコードを使用していた場合ではなかったにもかかわらず、ダグをスケジュールしているコマンドが欠落していると思います。エアフロードッカーの導入:開始日以降のタスクが実行されない

ここは私のドッカーファイルです。

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間隔でヶ月前に開始した日付を含め、日付を開始しています。これらのどれも私の運が与えられていない。

実際に困惑しているのは、私がダグをテストすると動作しますが、スケジューリングされず、デプロイ後にtask_instancesを作成しないということです。

ダグを適切にスケジュールする展開の正しい方向を誰かが指摘できますか?私が間違っていることは何ですか?

+1

は、あなたのDAGをオンにしていますか?例えば、このイメージを見てください。https://i.imgur.com/GkvqvLb.png。ダグがオンに切り替わります。 – nehiljain

+0

ちょうど、私は気流活性化ロジックに多くの矛盾があることがわかりました。私たちのほとんどが想定しているようには機能しません。何かがなぜ始まらないのかを理解するためには、コードを掘り下げる必要があります。気流の概念は素晴らしいですが、現在の実装は非常に変わったIMHOです。 –

+0

@nehiljain私はダグをオンにできる場所は実際には表示されません。 http://imgur.com/a/tSwOi何か不足していますか? – jhilliar

答えて

0

問題は、ドッカーファイルの最後に2つのCMDコマンドを使用できないことです。ドッカーの作成で2つのドッカーファイルを作成すると、うまくいきました。

Dockerfileには1つのCMD命令しか存在できません。複数のCMDをリストすると、最後のCMDだけが有効になります。あなたのWeb UIでは

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

関連する問題