未触发Google Cloud Composer DAG

问题描述

我正在安排DAG从今天2020/08/11开始,在东部标准时间(NY)的星期二至星期六的04:00 AM运行。编写代码并部署后,我希望DAG能够被触发。我刷新了Airflow UI页面几次,但仍无法触发。我正在将Airflow版本v1.10.9-composer与python 3配合使用。

这是我的DAG代码:

"""
This DAG executes a retrieval job
"""

# Required packages to execute DAG

from __future__ import print_function
import pendulum
from airflow.models import DAG
from airflow.models import Variable
from datetime import datetime,timedelta
from airflow.contrib.operators.ssh_operator import SSHOperator
from airflow.operators.dummy_operator import DummyOperator
from airflow.utils.trigger_rule import TriggerRule


local_tz = pendulum.timezone("America/New_York")

# DAG parameters

default_args = {
    'owner': 'Me','depends_on_past': False,'start_date': datetime(2020,8,10,4,tzinfo=local_tz),'dagrun_timeout': None,'email': Variable.get('email'),'email_on_failure': True,'email_on_retry': False,'provide_context': True,'retries': None,'retry_delay': timedelta(minutes=5)
}

# create DAG object with Name and default_args
with DAG(
        'retrieve_files',schedule_interval='0 4 * * 2-6',description='Retrieves files from sftp',max_active_runs=1,catchup=True,default_args=default_args
) as dag:
    # Define tasks - below are dummy tasks and a task instantiated by SSHOperator- calling methods written in other py class
    start_dummy = DummyOperator(
        task_id='start',dag=dag
    )

    end_dummy = DummyOperator(
        task_id='end',trigger_rule=TriggerRule.NONE_FAILED,dag=dag
    )

    retrieve_file = SSHOperator(
        ssh_conn_id="my_conn",task_id='retrieve_file',command='/usr/bin/python3  /path_to_file/getFile.py',dag=dag)


    dag.doc_md = __doc__

    retrieve_file.doc_md = """\
    #### Task Documentation
    Connects to sftp and retrieves files.
    """

    start_dummy >> retrieve_file >> end_dummy

解决方法

参考official documentation

计划程序将您的作业运行一个schedule_interval 之后开始日期。

如果您的开始日期是2020-01-01,并且schedule_interval是@daily,则 首次运行将于2020年1月2日创建,即在您的开始日期之后 已经过去了。

为了在每天的特定时间(包括今天)运行DAG,需要将start_date设置为过去的时间,而schedule_interval需要在{{ 1}}格式。正确设置昨天的日期时间非常重要,否则触发器将无法工作。

在这种情况下,我们应该将cron设置为前一周的星期二,即start_date。自开始日期以来,应该已经过了1周的间隔,因为它是每周运行一次。

让我们看下面的示例,该示例显示了如何在美国东部标准时间周二至周六凌晨04:00运行作业:

(2020,8,4)

我建议您检查what’s the deal with start_date文档。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...