Dean created AIRFLOW-4830:
-----------------------------

             Summary: Timezone ignored if default_args used for multiple dags
                 Key: AIRFLOW-4830
                 URL: https://issues.apache.org/jira/browse/AIRFLOW-4830
             Project: Apache Airflow
          Issue Type: Bug
          Components: DAG
    Affects Versions: 1.10.3
            Reporter: Dean
         Attachments: Screen Shot 2019-06-20 at 4.43.16 PM.png, Screen Shot 
2019-06-20 at 4.45.15 PM.png

I created a {{default_args}} dict and passed it to two different dags. In the 
first dag, the job was scheduled for 'America/Los_Angeles' as specified in the 
dict, but for the second it was in 'UTC' (it should also be 
'America/Los_Angeles'.

{code:python}
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
from datetime import datetime
import logging
from pendulum import timezone

def msg(s, **kwargs):
    logging.info('{}: {}'.format(s, str(kwargs['execution_date'])))

default_args = {
    'start_date': datetime(2018, 1, 1, tzinfo=timezone('America/Los_Angeles'))
}

dag1 = DAG('tz_test_shared_1',
           default_args=default_args,
           catchup=True,
           schedule_interval='0 0 * * *')

t1 = PythonOperator(
    task_id='t1',
    provide_context=True,
    op_args=['t1'],
    python_callable=msg,
    dag=dag1)

dag2 = DAG('tz_test_shared_2',
           default_args=default_args,
           catchup=True,
           schedule_interval='0 0 * * *')

t2 = PythonOperator(
    task_id='t2',
    provide_context=True,
    op_args=['t2'],
    python_callable=msg,
    dag=dag2)
{code}

See the resulting task execution times in Screen Shot 2019-06-20 at 4.45.15 
PM.png. One job happens at 08:00 UTC (as expected), but the other at 00:00 UTC.

Compare that to this version, the only difference is the dag names and 
{{default_args}} is repeated:

{code:python}
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
from datetime import datetime
import logging
from pendulum import timezone

def msg(s, **kwargs):
    logging.info('{}: {}'.format(s, str(kwargs['execution_date'])))

default_args = {
    'start_date': datetime(2018, 1, 1, tzinfo=timezone('America/Los_Angeles'))
}

dag1 = DAG('tz_test_1',
           default_args=default_args,
           catchup=True,
           schedule_interval='0 0 * * *')

t1 = PythonOperator(
    task_id='t1',
    provide_context=True,
    op_args=['t1'],
    python_callable=msg,
    dag=dag1)

default_args = {
    'start_date': datetime(2018, 1, 1, tzinfo=timezone('America/Los_Angeles'))
}

dag2 = DAG('tz_test_2',
           default_args=default_args,
           catchup=True,
           schedule_interval='0 0 * * *')

t2 = PythonOperator(
    task_id='t2',
    provide_context=True,
    op_args=['t2'],
    python_callable=msg,
    dag=dag2)
{code}

See the resulting task execution times in Screen Shot 2019-06-20 at 4.43.16 
PM.png. Both happen at 08:00 UTC (as expected).



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

Reply via email to