Я пытаюсь составлять еженедельные или ежемесячные графики воздушного потока, но это не работает. Может ли кто-нибудь сообщить, что может происходить? Если я делаю еженедельное, ежемесячное расписание, оно остается неподвижным, как если бы оно было выключено. Нет сообщения об ошибке, просто не выполняется. Я отправил пример кода, чтобы продемонстрировать, как я планирую ... есть ли другой способ сделать это планирование?

import airflow
import os
import six
import time
from datetime import datetime, timedelta
from airflow import DAG
from airflow import AirflowException
from airflow.models import BaseOperator
from airflow.utils.decorators import apply_defaults
from airflow.operators.slack_operator import SlackAPIPostOperator

default_args = {
    'owner': 'bexs-data',
    'start_date': airflow.utils.dates.days_ago(0),
    'depends_on_past': False,
    'email': ['airflow@apache.org'],
    'email_on_failure': False,
    'email_on_retry': False,
    'depends_on_past': False,
    # If a task fails, retry it once after waiting
    # at least 5 minutes
    'retries': 1,
    'retry_delay': timedelta(minutes=5),
    'on_failure_callback': slack_msg
}

dag = DAG(
    dag_id=nm_dag,
    default_args=default_args,
    schedule_interval='51 18 * * 4', 
    dagrun_timeout=timedelta(minutes=60)
)
1
Felipe FB 2 Окт 2019 в 21:58

1 ответ

Лучший ответ

Существует документация, в которой не выполняются следующие действия: 'start_date': airflow.utils.dates.days_ago(0),, потому что в этом случае с даты начала никогда не пройдет 1 недельный интервал, что означает, что первый интервал не закрывается, и первый запуск не планируется.

Предложение: выберите фиксированный день четвертого дня недели (четверг?) С прошлой недели в качестве start_date.

Воздушный поток будет принимать datetime или строка. Используйте datetime airflow.utils.timezone для расписания, отличного от UTC. Например, либо:

default_args = {
  'owner': 'your-unix-user-id-or-ldap-etc',
  'start_date': '2018-1-1',
...
}

Или

from airflow.utils.timezone import datetime

default_args = {
  'owner': 'your-unix-user-id-or-ldap-etc',
  'start_date': datetime(2018, 1, 1),
...
}
4
dlamblin 3 Окт 2019 в 18:22