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

Kyle Brooks commented on AIRFLOW-2231:
--------------------------------------

Thanks Joy, I was able to get relativedelta to work by making some slight 
changes to the model.py code.  I do think there's a use case for using 
relativedelta instead of cron syntax because it is more powerful.

I will submit a PR if and when I get approval to share the modifications.

Regarding not being able to reproduce the bug.  I would guess that the version 
of dateutil.relativedelta.relativedelta that you have implements __hash__ and 
so the class DAG __init__ does not fail like mine.  I have seen the same issue 
where the DAG will never be scheduled for classes that are hashable due to 
issues in the section of code you identified in your link above.

> DAG with a relativedelta schedule_interval fails
> ------------------------------------------------
>
>                 Key: AIRFLOW-2231
>                 URL: https://issues.apache.org/jira/browse/AIRFLOW-2231
>             Project: Apache Airflow
>          Issue Type: Bug
>          Components: DAG
>            Reporter: Kyle Brooks
>            Priority: Major
>         Attachments: test_reldel.py
>
>
> The documentation for the DAG class says using 
> dateutil.relativedelta.relativedelta as a schedule_interval is supported but 
> it fails:
>  
> Traceback (most recent call last):
>   File "/usr/local/lib/python3.6/site-packages/airflow/models.py", line 285, 
> in process_file
>     m = imp.load_source(mod_name, filepath)
>   File 
> "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/imp.py",
>  line 172, in load_source
>     module = _load(spec)
>   File "<frozen importlib._bootstrap>", line 675, in _load
>   File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
>   File "<frozen importlib._bootstrap_external>", line 678, in exec_module
>   File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
>   File "/Users/k398995/airflow/dags/test_reldel.py", line 33, in <module>
>     dagrun_timeout=timedelta(minutes=60))
>   File "/usr/local/lib/python3.6/site-packages/airflow/models.py", line 2914, 
> in __init__
>     if schedule_interval in cron_presets:
> TypeError: unhashable type: 'relativedelta'
>  
> It looks like the __init__ function for class DAG assumes the 
> schedule_interval is hashable.



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

Reply via email to