diff --git a/queue_job/jobrunner/__init__.py b/queue_job/jobrunner/__init__.py index 6c9ea39e4f..bf3a30b358 100644 --- a/queue_job/jobrunner/__init__.py +++ b/queue_job/jobrunner/__init__.py @@ -3,12 +3,20 @@ # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html) import logging -import os from threading import Thread import time 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 @@ -27,23 +35,7 @@ class QueueJobRunnerThread(Thread): 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')) - host = (os.environ.get('ODOO_QUEUE_JOB_HOST') or - config.misc.get("queue_job", {}).get('host') or - config['http_interface']) - port = (os.environ.get('ODOO_QUEUE_JOB_PORT') or - config.misc.get("queue_job", {}).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')) - password = (os.environ.get('ODOO_QUEUE_JOB_HTTP_AUTH_PASSWORD') or - config.misc.get("queue_job", {}).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/__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() diff --git a/queue_job/jobrunner/runner.py b/queue_job/jobrunner/runner.py index 0a633b45e9..e0324d3065 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 @@ -361,9 +359,39 @@ 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 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