From 1ccca4863598757cb9a9a222c630dfde37c0a021 Mon Sep 17 00:00:00 2001 From: Thomas Binsfeld Date: Tue, 26 Feb 2019 14:25:11 +0100 Subject: [PATCH 1/3] [IMP] Queue Job: allow configuration from server_environement --- queue_job/jobrunner/__init__.py | 19 ++++++++++++++----- queue_job/jobrunner/runner.py | 12 +++++------- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/queue_job/jobrunner/__init__.py b/queue_job/jobrunner/__init__.py index 6c9ea39e4f..9d87556575 100644 --- a/queue_job/jobrunner/__init__.py +++ b/queue_job/jobrunner/__init__.py @@ -9,6 +9,15 @@ from odoo.service import server from odoo.tools import config +try: + from odoo.addons.server_environment import serv_config + if serv_config.has_section('queue_job'): + queue_job_config = serv_config['queue_job'] + else: + queue_job_config = {} +except ImportError: + queue_job_config = config.misc.get('queue_job', {}) + from .runner import QueueJobRunner, _channels @@ -28,17 +37,17 @@ def __init__(self): Thread.__init__(self) self.daemon = True scheme = (os.environ.get('ODOO_QUEUE_JOB_SCHEME') or - config.misc.get("queue_job", {}).get('scheme')) + queue_job_config.get("scheme")) host = (os.environ.get('ODOO_QUEUE_JOB_HOST') or - config.misc.get("queue_job", {}).get('host') or + queue_job_config.get("host") or config['http_interface']) port = (os.environ.get('ODOO_QUEUE_JOB_PORT') or - config.misc.get("queue_job", {}).get('port') or + queue_job_config.get("port") or config['http_port']) user = (os.environ.get('ODOO_QUEUE_JOB_HTTP_AUTH_USER') or - config.misc.get("queue_job", {}).get('http_auth_user')) + queue_job_config.get("http_auth_user")) password = (os.environ.get('ODOO_QUEUE_JOB_HTTP_AUTH_PASSWORD') or - config.misc.get("queue_job", {}).get('http_auth_password')) + queue_job_config.get("http_auth_password")) self.runner = QueueJobRunner(scheme or 'http', host or 'localhost', port or 8069, diff --git a/queue_job/jobrunner/runner.py b/queue_job/jobrunner/runner.py index 0a633b45e9..fee5ea9a35 100644 --- a/queue_job/jobrunner/runner.py +++ b/queue_job/jobrunner/runner.py @@ -147,7 +147,7 @@ import odoo from odoo.tools import config - +from . import queue_job_config from .channels import ChannelManager, PENDING, ENQUEUED, NOT_DONE SELECT_TIMEOUT = 60 @@ -170,8 +170,7 @@ def _channels(): return ( os.environ.get('ODOO_QUEUE_JOB_CHANNELS') or - config.misc.get("queue_job", {}).get("channels") or - "root:1" + queue_job_config.get("channels") or "root:1" ) @@ -191,8 +190,7 @@ def _connection_info_for(db_name): for p in ('host', 'port'): cfg = (os.environ.get('ODOO_QUEUE_JOB_JOBRUNNER_DB_%s' % p.upper()) or - config.misc - .get("queue_job", {}).get('jobrunner_db_' + p)) + queue_job_config.get("jobrunner_db_" + p)) if cfg: connection_info[p] = cfg @@ -362,8 +360,8 @@ def __init__(self, self._stop_pipe = os.pipe() def get_db_names(self): - if odoo.tools.config['db_name']: - db_names = odoo.tools.config['db_name'].split(',') + if config['db_name']: + db_names = config['db_name'].split(',') else: db_names = odoo.service.db.exp_list(True) return db_names From 59bb15d2e0da990c73fa3da52fa53aa2a7574b62 Mon Sep 17 00:00:00 2001 From: Guewen Baconnier Date: Fri, 31 Aug 2018 16:03:57 +0200 Subject: [PATCH 2/3] Factorize options for QueueJobRunner --- queue_job/jobrunner/__init__.py | 19 +------------------ queue_job/jobrunner/runner.py | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 18 deletions(-) diff --git a/queue_job/jobrunner/__init__.py b/queue_job/jobrunner/__init__.py index 9d87556575..bf3a30b358 100644 --- a/queue_job/jobrunner/__init__.py +++ b/queue_job/jobrunner/__init__.py @@ -3,7 +3,6 @@ # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html) import logging -import os from threading import Thread import time @@ -36,23 +35,7 @@ class QueueJobRunnerThread(Thread): def __init__(self): Thread.__init__(self) self.daemon = True - scheme = (os.environ.get('ODOO_QUEUE_JOB_SCHEME') or - queue_job_config.get("scheme")) - host = (os.environ.get('ODOO_QUEUE_JOB_HOST') or - queue_job_config.get("host") or - config['http_interface']) - port = (os.environ.get('ODOO_QUEUE_JOB_PORT') or - queue_job_config.get("port") or - config['http_port']) - user = (os.environ.get('ODOO_QUEUE_JOB_HTTP_AUTH_USER') or - queue_job_config.get("http_auth_user")) - password = (os.environ.get('ODOO_QUEUE_JOB_HTTP_AUTH_PASSWORD') or - queue_job_config.get("http_auth_password")) - self.runner = QueueJobRunner(scheme or 'http', - host or 'localhost', - port or 8069, - user, - password) + self.runner = QueueJobRunner.from_environ_or_config() def run(self): # sleep a bit to let the workers start at ease diff --git a/queue_job/jobrunner/runner.py b/queue_job/jobrunner/runner.py index fee5ea9a35..e0324d3065 100644 --- a/queue_job/jobrunner/runner.py +++ b/queue_job/jobrunner/runner.py @@ -359,6 +359,36 @@ def __init__(self, self._stop = False self._stop_pipe = os.pipe() + @classmethod + def from_environ_or_config(cls): + scheme = os.environ.get("ODOO_QUEUE_JOB_SCHEME") or queue_job_config.get( + "scheme" + ) + host = ( + os.environ.get("ODOO_QUEUE_JOB_HOST") + or queue_job_config.get("host") + or config["http_interface"] + ) + port = ( + os.environ.get("ODOO_QUEUE_JOB_PORT") + or queue_job_config.get("port") + or config["http_port"] + ) + user = os.environ.get("ODOO_QUEUE_JOB_HTTP_AUTH_USER") or queue_job_config.get( + "http_auth_user" + ) + password = os.environ.get( + "ODOO_QUEUE_JOB_HTTP_AUTH_PASSWORD" + ) or queue_job_config.get("http_auth_password") + runner = cls( + scheme=scheme or "http", + host=host or "localhost", + port=port or 8069, + user=user, + password=password, + ) + return runner + def get_db_names(self): if config['db_name']: db_names = config['db_name'].split(',') From 27df86e769ae2c1672da381959b3bff0974557f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Bidoul?= Date: Thu, 17 Feb 2022 16:13:21 +0100 Subject: [PATCH 3/3] [WIP] add jobrunner cli --- queue_job/jobrunner/__main__.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 queue_job/jobrunner/__main__.py diff --git a/queue_job/jobrunner/__main__.py b/queue_job/jobrunner/__main__.py new file mode 100644 index 0000000000..8f9628c5db --- /dev/null +++ b/queue_job/jobrunner/__main__.py @@ -0,0 +1,13 @@ +import odoo + +from .runner import QueueJobRunner + + +def main(): + odoo.tools.config.parse_config() + runner = QueueJobRunner.from_environ_or_config() + runner.run() + + +if __name__ == "__main__": + main()