18
18
19
19
import logging
20
20
from concurrent .futures import Executor , ThreadPoolExecutor
21
+ from datetime import datetime
21
22
from typing import TYPE_CHECKING
22
23
23
24
from airflow .listeners import hookimpl
@@ -76,16 +77,22 @@ def on_running():
76
77
77
78
task_metadata = self .extractor_manager .extract_metadata (dagrun , task )
78
79
80
+ start_date = task_instance .start_date if task_instance .start_date else datetime .now ()
81
+ data_interval_start = (
82
+ dagrun .data_interval_start .isoformat () if dagrun .data_interval_start else None
83
+ )
84
+ data_interval_end = dagrun .data_interval_end .isoformat () if dagrun .data_interval_end else None
85
+
79
86
self .adapter .start_task (
80
87
run_id = task_uuid ,
81
88
job_name = get_job_name (task ),
82
89
job_description = dag .description ,
83
- event_time = task_instance . start_date .isoformat (),
90
+ event_time = start_date .isoformat (),
84
91
parent_job_name = dag .dag_id ,
85
92
parent_run_id = parent_run_id ,
86
93
code_location = None ,
87
- nominal_start_time = dagrun . data_interval_start . isoformat () ,
88
- nominal_end_time = dagrun . data_interval_end . isoformat () ,
94
+ nominal_start_time = data_interval_start ,
95
+ nominal_end_time = data_interval_end ,
89
96
owners = dag .owner .split (", " ),
90
97
task = task_metadata ,
91
98
run_facets = {
@@ -113,10 +120,13 @@ def on_success():
113
120
task_metadata = self .extractor_manager .extract_metadata (
114
121
dagrun , task , complete = True , task_instance = task_instance
115
122
)
123
+
124
+ end_date = task_instance .end_date if task_instance .end_date else datetime .now ()
125
+
116
126
self .adapter .complete_task (
117
127
run_id = task_uuid ,
118
128
job_name = get_job_name (task ),
119
- end_time = task_instance . end_date .isoformat (),
129
+ end_time = end_date .isoformat (),
120
130
task = task_metadata ,
121
131
)
122
132
@@ -139,10 +149,12 @@ def on_failure():
139
149
dagrun , task , complete = True , task_instance = task_instance
140
150
)
141
151
152
+ end_date = task_instance .end_date if task_instance .end_date else datetime .now ()
153
+
142
154
self .adapter .fail_task (
143
155
run_id = task_uuid ,
144
156
job_name = get_job_name (task ),
145
- end_time = task_instance . end_date .isoformat (),
157
+ end_time = end_date .isoformat (),
146
158
task = task_metadata ,
147
159
)
148
160
@@ -165,12 +177,14 @@ def on_dag_run_running(self, dag_run: DagRun, msg: str):
165
177
if not self .executor :
166
178
self .log .error ("Executor have not started before `on_dag_run_running`" )
167
179
return
180
+ data_interval_start = dag_run .data_interval_start .isoformat () if dag_run .data_interval_start else None
181
+ data_interval_end = dag_run .data_interval_end .isoformat () if dag_run .data_interval_end else None
168
182
self .executor .submit (
169
183
self .adapter .dag_started ,
170
184
dag_run = dag_run ,
171
185
msg = msg ,
172
- nominal_start_time = dag_run . data_interval_start . isoformat () ,
173
- nominal_end_time = dag_run . data_interval_end . isoformat () ,
186
+ nominal_start_time = data_interval_start ,
187
+ nominal_end_time = data_interval_end ,
174
188
)
175
189
176
190
@hookimpl
0 commit comments