@@ -65,15 +65,16 @@ class GraphRunnableTask(ConfiguredTask):
6565
6666 def __init__ (self , args , config , manifest ):
6767 super ().__init__ (args , config , manifest )
68- self .job_queue : Optional [GraphQueue ] = None
6968 self ._flattened_nodes : Optional [List [ResultNode ]] = None
70-
71- self .run_count : int = 0
72- self .num_nodes : int = 0
73- self .node_results = []
74- self ._skipped_children = {}
7569 self ._raise_next_tick = None
70+ self ._skipped_children = {}
71+ self .job_queue : Optional [GraphQueue ] = None
72+ self .node_results = []
73+ self .num_nodes : int = 0
7674 self .previous_state : Optional [PreviousState ] = None
75+ self .run_count : int = 0
76+ self .started_at : float = 0
77+
7778 self .set_previous_state ()
7879
7980 def set_previous_state (self ):
@@ -302,6 +303,15 @@ def _handle_result(self, result):
302303 cause = None
303304 self ._mark_dependent_errors (node .unique_id , result , cause )
304305
306+ interim_run_result = self .get_result (
307+ results = self .node_results ,
308+ elapsed_time = time .time () - self .started_at ,
309+ generated_at = datetime .utcnow (),
310+ )
311+
312+ if self .args .write_json and hasattr (interim_run_result , "write" ):
313+ interim_run_result .write (self .result_path ())
314+
305315 def _cancel_connections (self , pool ):
306316 """Given a pool, cancel all adapter connections and wait until all
307317 runners gentle terminates.
@@ -393,24 +403,21 @@ def print_results_line(self, node_results, elapsed):
393403
394404 def execute_with_hooks (self , selected_uids : AbstractSet [str ]):
395405 adapter = get_adapter (self .config )
396- started = time .time ()
406+ self . started_at = time .time ()
397407 try :
398408 self .before_run (adapter , selected_uids )
399409 res = self .execute_nodes ()
400410 self .after_run (adapter , res )
401411 finally :
402412 adapter .cleanup_connections ()
403- elapsed = time .time () - started
413+ elapsed = time .time () - self . started_at
404414 self .print_results_line (self .node_results , elapsed )
405415 result = self .get_result (
406416 results = self .node_results , elapsed_time = elapsed , generated_at = datetime .utcnow ()
407417 )
408418
409419 return result
410420
411- def write_result (self , result ):
412- result .write (self .result_path ())
413-
414421 def run (self ):
415422 """
416423 Run dbt for the query, based on the graph.
@@ -447,9 +454,10 @@ def run(self):
447454 )
448455 )
449456
450- if get_flags (). WRITE_JSON :
457+ if self . args . write_json :
451458 write_manifest (self .manifest , self .config .target_path )
452- self .write_result (result )
459+ if hasattr (result , "write" ):
460+ result .write (self .result_path ())
453461
454462 self .task_end_messages (result .results )
455463 return result
0 commit comments