|
5 | 5 | from odoo import api, fields, models |
6 | 6 |
|
7 | 7 | from odoo.addons.mail.tools.discuss import Store |
| 8 | +from odoo.addons.queue_job.exception import RetryableJobError |
8 | 9 |
|
9 | 10 |
|
10 | 11 | class QueueJobBatch(models.Model): |
@@ -58,6 +59,7 @@ class QueueJobBatch(models.Model): |
58 | 59 | completeness = fields.Float( |
59 | 60 | compute="_compute_job_count", |
60 | 61 | ) |
| 62 | + execution_time = fields.Float(compute="_compute_job_count") |
61 | 63 | failed_percentage = fields.Float( |
62 | 64 | compute="_compute_job_count", |
63 | 65 | ) |
@@ -107,8 +109,13 @@ def _compute_job_count(self): |
107 | 109 | rec.failed_job_count = len(jobs_by_state.get("failed", [])) |
108 | 110 | rec.finished_job_count = len(jobs_by_state.get("done", [])) |
109 | 111 | rec.completeness = rec.finished_job_count / max(1, rec.job_count) |
| 112 | + rec.execution_time = sum(rec.job_ids.mapped("exec_time")) |
110 | 113 | rec.failed_percentage = rec.failed_job_count / max(1, rec.job_count) |
111 | 114 |
|
| 115 | + def _on_finished(self): |
| 116 | + if self.state != "finished": |
| 117 | + raise RetryableJobError(f"{self.name} {100.0 * self.completeness}%") |
| 118 | + |
112 | 119 | @api.model |
113 | 120 | def _to_store_fnames(self): |
114 | 121 | return ( |
|
0 commit comments