summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fixco_custom/models/queue_job.py24
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()