LinuxAMIでLocalExecutorとPostgreSQLデータベースを使用してAirflow1.9.0を実行しています。手動でDAGをトリガーしたいのですが、schedule_interval
がNone
または@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)
これを試して:
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)