@@ -119,16 +119,22 @@ def refresh(self, query: Query, ping_frequency: int = 5) -> list[DuneRecord]:
119119 Sleeps `ping_frequency` seconds between each status request.
120120 """
121121 job_id = self .execute (query ).execution_id
122- state = self .get_status (job_id ).state
123- while state != ExecutionState .COMPLETED :
124- log .info (
125- f"waiting for query execution { job_id } to complete: current state { state } "
126- )
122+ status = self .get_status (job_id )
123+ while status .state not in ExecutionState .terminal_states ():
124+ log .info (f"waiting for query execution { job_id } to complete: { status } " )
127125 time .sleep (ping_frequency )
128- state = self .get_status (job_id ). state
126+ status = self .get_status (job_id )
129127
130- full_response = self .get_result (job_id )
131- assert (
132- full_response .result is not None
133- ), f"Expected Results on completed execution status { full_response } "
134- return full_response .result .rows
128+ if status .state == ExecutionState .COMPLETED :
129+ full_response = self .get_result (job_id )
130+ assert (
131+ full_response .result is not None
132+ ), f"Expected Results on completed execution status { full_response } "
133+ return full_response .result .rows
134+
135+ if status .state == ExecutionState .CANCELLED :
136+ log .info ("Execution Cancelled, returning empty record set" )
137+ return []
138+
139+ log .error (status )
140+ raise Exception (f"{ status } . Perhaps your query took too long to run!" )
0 commit comments