diff options
| -rw-r--r-- | fixco_custom/models/queue_job.py | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/fixco_custom/models/queue_job.py b/fixco_custom/models/queue_job.py index 68ddf8c..56926e3 100644 --- a/fixco_custom/models/queue_job.py +++ b/fixco_custom/models/queue_job.py @@ -25,10 +25,13 @@ class QueueJob(models.Model): job.action_run() def action_run(self, limit=10): - jobs = self.search([('state', '=', 'draft')], order='create_date desc', limit=limit) + jobs = self.search([('state', '=', 'draft'), ('method_name', '=', 'get_order_id_and_create_detail_order')], order='create_date desc', limit=limit) + if not jobs: + jobs = self.search([('state', '=', 'draft'), ('method_name', '!=', 'get_order_id_and_create_detail_order')], order='create_date desc', limit=limit) for job in jobs: - job.state = 'running' try: + job.write({'state': 'running'}) + self.env.cr.commit() record = self.env[job.model_name].browse(job.res_id) if not record.exists(): @@ -38,9 +41,16 @@ class QueueJob(models.Model): if not method: raise UserError('Method not found') - method() # 🔥 EXECUTE - job.state = 'done' + with self.env.cr.savepoint(): + method() + + job.write({'state': 'done'}) + self.env.cr.commit() + + except Exception: + job.write({ + 'state': 'error', + 'error_message': traceback.format_exc() + }) + self.env.cr.commit() - except Exception as e: - job.state = 'error' - job.error_message = traceback.format_exc() |
