yuqian90 commented on a change in pull request #7038: [AIRFLOW-4495] allow
externally triggered dags to run for future exec dates
URL: https://github.com/apache/airflow/pull/7038#discussion_r363145270
##########
File path: airflow/models/dag.py
##########
@@ -778,16 +778,26 @@ def set_dependency(self, upstream_task_id,
downstream_task_id):
def get_task_instances(
self, start_date=None, end_date=None, state=None, session=None):
if not start_date:
+ # TODO why 30?
start_date = (timezone.utcnow() - timedelta(30)).date()
start_date = timezone.make_aware(
datetime.combine(start_date, datetime.min.time()))
- end_date = end_date or timezone.utcnow()
- tis = session.query(TaskInstance).filter(
- TaskInstance.dag_id == self.dag_id,
- TaskInstance.execution_date >= start_date,
- TaskInstance.execution_date <= end_date,
- TaskInstance.task_id.in_([t.task_id for t in self.tasks]),
- )
+
Review comment:
Okay this does look necessary. And it's easy to fix. How about adding this
property to `class DAG`?
```python
class DAG:
...
@property
def allow_future_exec_dates(self):
return conf.getboolean('scheduler', 'RUN_FUTURE_EXEC_DATES',
fallback=False) and self.schedule_interval is None
```
This line can become:
```python
tis = session.query(TaskInstance).filter(TaskInstance.dag_id ==
self.dag_id,
TaskInstance.execution_date
>= start_date,
TaskInstance.task_id.in_([t.task_id for t in self.tasks]))
if end_date or not self.allow_future_exec_dates:
end_date = end_date or timezone.utcnow()
tis = tis.filter(TaskInstance.execution_date <= end_date)
```
And you may want to use `dag.allow_future_exec_dates` in the two other
places that you checked the same conditions too, i.e. scheduler_job.py and
runnable_exec_date_dep.py
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services