Sounds perfect. Will fix my tests as of now and try to create a patch as
well.

On Wed, Dec 6, 2017 at 7:58 PM, Bolke de Bruin <[email protected]> wrote:

> You are directly instantiating a TaskInstance which does not verify
> against naive dates being passed, not a DAG. DAGs with naive dates will
> work fine.
>
> So for TaskInstances, instantiated outside Airflow itself (ie your python
> file) it will fail on *master* given no patch. So, I guess a patch is
> very welcome if you are relying on this behaviour.
>
> Cheers
> Bolke
>
> On 6 Dec 2017, at 15:25, Sumit Maheshwari <[email protected]> wrote:
>
> Thanks Bolke for the information.
>
> BTW will existing dags which are using native datetime start failing after
> this change, given no patch is done??
>
> Just to be precise, dags which may be using methods like xcom push/pull?
>
> On Dec 6, 2017 7:49 PM, "Bolke de Bruin" <[email protected]> wrote:
>
>> You should not use a naive datetime as it mentioned. So instead of of
>> using “from datetime import datetime” use “from airflow.utils.timezone
>> import datetime”. This sets the timezone information that is required to
>> the default configured in airflow.cfg.
>>
>> A patch that sets the default timezone for TaskInstance is also helpful
>> in this case and will be welcomed. How to do it you can find in the DAG
>> class.
>>
>> Bolke.
>>
>> On 6 Dec 2017, at 15:13, Sumit Maheshwari <[email protected]> wrote:
>>
>> Folks,
>>
>> I've some testes, which used to pass earlier, but recently they started
>> failing. When I looked closely it appeared that xcom_push is behaving
>> differently.
>>
>>
>> So this is is the current code, which throws the error mentioned below to
>> it
>>
>> DEFAULT_DATE = datetime(2017, 1, 1)
>>
>> ti = TaskInstance(task=task, execution_date=DEFAULT_DATE)
>> ti.xcom_push('abcd', 12345)
>>
>>
>>   File "build/bdist.macosx-10.11-intel/egg/sqlalchemy_utc.py", line 31, in 
>> process_bind_param
>>
>>     raise ValueError('naive datetime is disallowed')
>> StatementError: (exceptions.ValueError) naive datetime is disallowed [SQL: 
>> u'DELETE FROM xcom WHERE xcom."key" = ? AND xcom.execution_date = ? AND 
>> xcom.task_id = ? AND xcom.dag_id = ?'] [parameters: [{}]]
>>
>>
>> When I changed the execution date param to a string, it fails with other
>> error.
>>
>> ti = TaskInstance(task=task, execution_date=DEFAULT_DATE.isoformat())
>> ti.xcom_push('abcd', 12345)
>>
>>
>>   File "build/bdist.macosx-10.11-intel/egg/sqlalchemy_utc.py", line 29, in 
>> process_bind_param
>>     repr(value))
>> StatementError: (exceptions.TypeError) expected datetime.datetime, not 
>> '2017-01-01T00:00:00' [SQL: u'DELETE FROM xcom WHERE xcom."key" = ? AND 
>> xcom.execution_date = ? AND xcom.task_id = ? AND xcom.dag_id = ?'] 
>> [parameters: [{}]]
>>
>>
>> Somehow I feel that it is linked with *sqlalchemy_utc* library, though I may 
>> be wrong and its just missing some timezone related settings.
>>
>> Please let me know if anyone else has faced this issue as well.
>>
>>
>> Thanks,
>>
>> Sumit
>>
>>
>>
>>
>>
>

Reply via email to