Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 10 additions & 18 deletions queue_job/jobrunner/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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
Expand Down
13 changes: 13 additions & 0 deletions queue_job/jobrunner/__main__.py
Original file line number Diff line number Diff line change
@@ -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()
42 changes: 35 additions & 7 deletions queue_job/jobrunner/runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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"
)


Expand All @@ -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
Expand Down Expand Up @@ -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
Expand Down