From 2cdd75e77afdf57c36abff901e9f47ed077eea62 Mon Sep 17 00:00:00 2001 From: Nils Hamerlinck Date: Thu, 22 Oct 2020 00:03:40 +0700 Subject: [PATCH] [ADD] queue_job: innocuous test job for debugging/monitoring purposes --- queue_job/controllers/main.py | 33 +++++++++++++++++++++++++++++++++ queue_job/models/queue_job.py | 6 +++++- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/queue_job/controllers/main.py b/queue_job/controllers/main.py index 2f4d60dff8..81adc7cab4 100644 --- a/queue_job/controllers/main.py +++ b/queue_job/controllers/main.py @@ -7,6 +7,7 @@ from io import StringIO from psycopg2 import OperationalError +from werkzeug.exceptions import Forbidden import odoo from odoo import _, http, tools @@ -108,3 +109,35 @@ def retry_postpone(job, message, seconds=None): raise return "" + + @http.route("/queue_job/create_test_job", type="http", auth="user") + def create_test_job( + self, priority=None, max_retries=None, channel="root", description="Test job" + ): + if not http.request.env.user.has_group("base.group_erp_manager"): + raise Forbidden(_("Access Denied")) + + if priority is not None: + try: + priority = int(priority) + except ValueError: + priority = None + + if max_retries is not None: + try: + max_retries = int(max_retries) + except ValueError: + max_retries = None + + delayed = ( + http.request.env["queue.job"] + .with_delay( + priority=priority, + max_retries=max_retries, + channel=channel, + description=description, + ) + ._test_job() + ) + + return delayed.db_record().uuid diff --git a/queue_job/models/queue_job.py b/queue_job/models/queue_job.py index dec0fcfa1d..1cff206a04 100644 --- a/queue_job/models/queue_job.py +++ b/queue_job/models/queue_job.py @@ -8,7 +8,7 @@ from odoo.osv import expression from ..fields import JobSerialized -from ..job import DONE, PENDING, STATES, Job +from ..job import DONE, PENDING, STATES, Job, job _logger = logging.getLogger(__name__) @@ -305,6 +305,10 @@ def related_action_open_record(self): ) return action + @job + def _test_job(self): + _logger.info("Running test job.") + class RequeueJob(models.TransientModel): _name = "queue.requeue.job"