Wie, um korrekt zu arbeiten Luftstrom schedule_interval
Möchte ich versuchen, den Luftstrom anstelle von Cron.
Aber schedule_interval nicht funktioniert, als ich erwartet hatte.
Schrieb ich den python-code wie unten gezeigt.
Und in meinem Verständnis, Airflow haben sollte, lief auf "2016/03/30 8:15:00" aber es hat nicht funktioniert damals.
Wenn ich es geändert wie hier "'schedule_interval': timedelta(minutes = 5)", wird es richtig geklappt hat, denke ich.
"Notice_slack.sh" nur zu nennen, slack-api, um meine channels.
# -*- 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)
Möchte ich laufen einige meiner Scripte zu einer bestimmten Zeit jeden Tag, wie dieser cron-Einstellung.
15 08 * * * bash /tmp/notice_slack.sh
Ich habe das Dokument gelesen Planung & Trigger, und ich weiß, es ist ein bisschen anders cron.
Also ich Versuch zu ordnen unter "Startdatum" und "schedule_interval" Einstellungen.
Weiß jemand, was soll ich tun ?
Luftstrom version
INFO - Mit executor LocalExecutor
v1.7.0
amazon linux-ami/2015.09-release-notes
InformationsquelleAutor k16 | 2016-03-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Luftstrom beginnen Sie den DAG, wenn die 2016/03/30 8:15:00 + Intervall (täglich) übergeben wird. So Ihr DAG läuft auf 2016/03/31 8:15:00 Uhr.
Können Sie die Luftstrom FAQ
@daily
ist eine Abkürzung für0 0 * * *
wenn ich die Dokumentation Lesen, richtig, das heißt, es würde um Mitternacht ausgeführt werden, oder?Ihre Annahme ist richtig. die erste 0 steht für 0. minute des Tages. Die zweite 0 steht für 0. Stunde des Tages. cron-Ausdruck
InformationsquelleAutor p.magalhaes
Versuchen Sie dies:
start_date
(datetime) – Das Startdatum für die Aufgabe bestimmt, die execution_date für die erste Aufgabe, die Instanz. Die beste Praxis ist es, start_date, gerundet auf Ihre DAG schedule_interval.schedule_interval
(datetime.timedelta oder dateutil.relativedelta.relativedelta oder str, daß Handlungen, wie Sie einen cron-Ausdruck) – Legt fest, wie oft, DAG läuft, diese timedelta-Objekt Hinzugefügt wird, um Ihre Letzte Aufgabe-Instanz execution_date, um herauszufinden, die nächste planen.Einfach konfigurieren der
schedule_interval
undbash_command
als das gleiche in Ihrer cron-Einstellung ist okay.execution_date
wird der Anfang des Intervalls die gerade zu Ende gegangen. Also mit diesem setup, die zuerst ausgeführt wird, datiert2016 03 29T08:15:00.000
im geplantendag_run
was ist das, was die übergebeneexecution_date
werden, aber es löst diese laufen ein wenig nach2016 03 30T08:15:00
was ist, wenn der volle Intervall von derexecution_date
bestanden hat.InformationsquelleAutor ansvver
Mit dem Beispiel, das Sie gegeben haben
@daily
wird und der Auftrag wird ausgeführt, nachdem es passiert Mitternacht. Sie könnten versuchen, es zu ändern, entwedertimedelta(days=1)
die relativ zu Ihrem festenstart_date
enthält 08:15.Oder verwenden Sie einen cron-spec für die
schedule_interval='15 08 * * *'
in diesem Fall ein start-Datum vor 8:15 auf den Tag VOR dem Tag, Sie wollte den ersten Lauf funktionieren würde.Beachten Sie, dass
depends_on_past: False
ist schon der Standard, und Sie können verwirrt sein Verhalten mitcatchup=false
im DAG-Parameter zu finden, die würde verhindern, dass Vergangenheit läuft für die Zeit zwischen dem start-Datum, und jetzt, wo die DAG-Intervall hätte.InformationsquelleAutor dlamblin