From e19af050a32f9192bc7b5f7d3410c74e2079a50d Mon Sep 17 00:00:00 2001 From: Dorin Hongu Date: Tue, 4 Feb 2025 20:32:22 +0200 Subject: [PATCH] [FIX] queue_job: enhance CRON trigger functionality and logging --- deltatech_queue_job/__manifest__.py | 2 +- deltatech_queue_job/models/queue_job.py | 26 +++++++++++++------------ 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/deltatech_queue_job/__manifest__.py b/deltatech_queue_job/__manifest__.py index aed535aee..5ab43f070 100644 --- a/deltatech_queue_job/__manifest__.py +++ b/deltatech_queue_job/__manifest__.py @@ -6,7 +6,7 @@ "name": "Deltatech Queue Job Enhancements", "summary": "Deltatech Queue Job", "author": "Terrabit, Dorin Hongu", - "version": "17.0.1.0.2", + "version": "17.0.1.0.3", "license": "AGPL-3", "website": "https://www.terrabit.ro", "category": "Others", diff --git a/deltatech_queue_job/models/queue_job.py b/deltatech_queue_job/models/queue_job.py index d0bb0a11c..fc1514450 100644 --- a/deltatech_queue_job/models/queue_job.py +++ b/deltatech_queue_job/models/queue_job.py @@ -3,8 +3,8 @@ # See README.rst file on addons root folder for license details import logging -from odoo import _, api, models - +from odoo import _, api,fields, models +from datetime import timedelta _logger = logging.getLogger(__name__) @@ -12,14 +12,7 @@ class QueueJob(models.Model): _inherit = "queue.job" def start_cron_trigger(self): - _logger.info("Starting CRON trigger") - domain = [("queue_job_runner", "=", True)] - crons = self.env["ir.cron"].sudo().with_context(active_test=False).search(domain) - for cron in crons: - cron.active = True - _logger.info("Starting CRON trigger for %s", cron.name) - cron._trigger() - + self._cron_trigger() return { "type": "ir.actions.client", "tag": "display_notification", @@ -58,5 +51,14 @@ def _job_runner(self, commit=True): @api.model def _cron_trigger(self, at=None): - _logger.info("CRON Trigger") - return super()._cron_trigger(at=at) + domain = [("queue_job_runner", "=", True)] + crons = self.env["ir.cron"].sudo().with_context(active_test=False).search(domain) + for cron in crons: + cron.active = True + trigger = self.env["ir.cron.trigger"].search([("cron_id", "=", cron.id)]) + if trigger: + trigger.unlink() + if not at: + at = fields.Datetime.now() + timedelta(seconds=5) + cron._trigger(at=at) + _logger.info("CRON trigger for %s at %s", (cron.name, at))