| 2194 | self.save() |
| 2195 | |
| 2196 | def stop_run(self): |
| 2197 | if self.run_succeeded: |
| 2198 | return |
| 2199 | |
| 2200 | self.append_to_log("Stop run requested") |
| 2201 | if self.status == self.Status.QUEUED: |
| 2202 | self.dequeue() |
| 2203 | self.set_run_stopped() |
| 2204 | return |
| 2205 | |
| 2206 | if not self.job_status: |
| 2207 | self.set_run_staled() |
| 2208 | return |
| 2209 | |
| 2210 | if self.job_status == JobStatus.FAILED: |
| 2211 | job = self.job |
| 2212 | end_date = job.ended_at.replace(tzinfo=datetime.timezone.utc) |
| 2213 | self.set_run_ended( |
| 2214 | exitcode=1, |
| 2215 | output=f"Killed from outside, exc_info={job.exc_info}", |
| 2216 | end_date=end_date, |
| 2217 | ) |
| 2218 | return |
| 2219 | |
| 2220 | send_stop_job_command( |
| 2221 | connection=django_rq.get_connection(), |
| 2222 | job_id=str(self.run_id), |
| 2223 | ) |
| 2224 | self.set_run_stopped() |
| 2225 | |
| 2226 | def delete_run(self, delete_self=True): |
| 2227 | if job := self.job: |