You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by "André da Silva Pinto (JIRA)" <ji...@apache.org> on 2018/01/19 00:59:10 UTC

[jira] [Commented] (AIRFLOW-1156) Using a timedelta object as a Schedule Interval with catchup=False causes the start_date to no longer be honored.

    [ https://issues.apache.org/jira/browse/AIRFLOW-1156?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16331533#comment-16331533 ] 

André da Silva Pinto commented on AIRFLOW-1156:
-----------------------------------------------

This also causes the initial run to immediately include 2 different dag runs (now-period and now-2*period) when the dag is enabled.

Problematic code:

https://github.com/apache/incubator-airflow/blob/master/airflow/jobs.py#L797-L813

> Using a timedelta object as a Schedule Interval with catchup=False causes the start_date to no longer be honored.
> -----------------------------------------------------------------------------------------------------------------
>
>                 Key: AIRFLOW-1156
>                 URL: https://issues.apache.org/jira/browse/AIRFLOW-1156
>             Project: Apache Airflow
>          Issue Type: Bug
>    Affects Versions: Airflow 1.8
>            Reporter: Zachary Lawson
>            Priority: Minor
>
> Currently, in Airflow v1.8, if you set your schedule_interval to a timedelta object and set catchup=False, the start_date is no longer honored and the DAG is scheduled immediately upon unpausing the DAG. It is then schedule on the schedule interval from that point onward. Example below:
> {code}
> from airflow import DAG
> from datetime import datetime, timedelta
> import logging
> from airflow.operators.python_operator import PythonOperator
> default_args = {
>     'owner': 'airflow',
>     'depends_on_past': False,
>     'start_date': datetime(2015, 6, 1),
> }
> dag = DAG('test', default_args=default_args, schedule_interval=timedelta(seconds=5), catchup=False)
> def context_test(ds, **context):
>     logging.info('testing')
> test_context = PythonOperator(
>     task_id='test_context',
>     provide_context=True,
>     python_callable=context_test,
>     dag=dag
> )
> {code}
> If you switch the above over to a CRON expression, the behavior of the scheduling is returned to the expected.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)