web-dev-qa-db-ja.com

Airflow Webサーバーは、スケジュール間隔としてNoneを使用したDAGに対してcronエラーを表示します

LinuxAMIでLocalExecutorとPostgreSQLデータベースを使用してAirflow1.9.0を実行しています。手動でDAGをトリガーしたいのですが、schedule_intervalNoneまたは@onceに設定されたDAGを作成すると、Webサーバーツリービューが次のエラーでクラッシュします(ラスト・オーダー):

File "/usr/local/lib/python2.7/site-packages/croniter/croniter.py", line 467, in expand 
    raise CroniterBadCronError(cls.bad_length)
CroniterBadCronError: Exactly 5 or 6 columns has to be specified for iteratorexpression.

さらに、DAGを手動でトリガーすると、DAGの実行は開始されますが、タスク自体はスケジュールされません。周りを見回しましたが、この種のエラーが発生したのは私だけのようです。誰かが以前にこのエラーに遭遇し、修正を見つけたことがありますか?

問題を引き起こす最小限の例:

import datetime as dt
from airflow import DAG
from airflow.operators.bash_operator import BashOperator

default_args = {
    'owner': 'me'
}

bash_command = """
    echo "this is a test task"
"""

with DAG('schedule_test',
        default_args=default_args,
        start_date = dt.datetime(2018, 7, 24),
        schedule_interval='None',
        catchup=False
        ) as dag:

    first_task = BashOperator(task_id = "first_task", bash_command = bash_command)
7
T. van Hees

これを試して:

  • schedule_interval''なしでNoneに設定するか、単にschedule_interval in your DAGを指定しないでください。 None as a defaultに設定されます。詳細については、こちらをご覧ください: airflow docs -BaseOperatorを検索してください
  • ダグの下部でタスクのオーケストレーションを設定します。

そのようです:

import datetime
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from airflow.operators.dummy_operator import DummyOperator

default_args = {
    'owner': 'me'
}

bash_command = """
    echo "this is a test task"
"""

with DAG('schedule_test',
        default_args=default_args,
        start_date = datetime(2018, 7, 24),
        schedule_interval=None,
        catchup=False
        ) as dag:

t1 = DummyOperator(
    task_id='extract_data',
    dag=dag
)

t2 = BashOperator(
    task_id = "first_task", 
    bash_command = bash_command
)

#####ORCHESTRATION#####
## It is saying that in order for t2 to run, t1 must be done.
t2.set_upstream(t1)
7
Zack