Cron の代わりに Airflow を使用してみます。しかし、schedule_interval は期待どおりに機能しません。
以下のようなPythonコードを書きました。
私の理解では、Airflow は「2016/03/30 8:15:00」に実行されるべきでしたが、その時点では機能しませんでした。
「'schedule_interval': timedelta(minutes = 5)」のように変更すると、正しく動作したと思います。
「notice_slack.sh」は、自分のチャンネルに slack api を呼び出すためのものです。
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
import os
from airflow.operators import BashOperator
from airflow.models import DAG
from datetime import datetime, timedelta
args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': datetime(2016, 3, 29, 8, 15),
}
dag = DAG(
dag_id='notice_slack',
default_args=args,
schedule_interval="@daily",
dagrun_timeout=timedelta(minutes=1))
# cmd file name
CMD = '/tmp/notice_slack.sh'
run_this = BashOperator(
task_id='run_transport', bash_command=CMD, dag=dag)
この cron 設定のように、毎日特定の時間にいくつかのスクリプトを実行したいと考えています。
15 08 * * * bash /tmp/notice_slack.sh
Scheduling & Triggersというドキュメントを読んだことがありますが、cron とは少し異なります。
そこで、「start_date」と「schedule_interval」の設定で並べてみます。
誰が私が何をすべきか知っていますか?
気流バージョン
INFO - エグゼキュータ LocalExecutor の使用
v1.7.0
amazon-linux-ami/2015.09-リリースノート