queue icon indicating copy to clipboard operation
queue copied to clipboard

[Question] queue_job when multiple odoo servers are used with load balancing (and single postgres)

Open JordiBForgeFlow opened this issue 3 years ago • 7 comments

In the scenario where multiple odoo servers are used with load balancing, and a single postgres server is used, will all of the odoo servers try to run all the jobs?

JordiBForgeFlow avatar Apr 08 '22 08:04 JordiBForgeFlow

@JordiBForgeFlow you need to make sure that only one Odoo instance has queue_job in --load / server_wide_modules. This is very important.

Alternatively, you can launch a separate job runner process with something like #409.

sbidoul avatar Jul 01 '22 13:07 sbidoul

See also https://github.com/OCA/queue/pull/256

sbidoul avatar Jul 01 '22 13:07 sbidoul

There hasn't been any activity on this issue in the past 6 months, so it has been marked as stale and it will be closed automatically if no further activity occurs in the next 30 days. If you want this issue to never become stale, please ask a PSC member to apply the "no stale" label.

github-actions[bot] avatar Jan 01 '23 12:01 github-actions[bot]

@sbidoul having to tweak the configuration for one instance can become an issue when we have to deploy to a variable number of Odoo instances. Is it not possible to namescope the NOTIFY payload with host/main-odoo-pid/dbname to allow multiple job-runners to be active?

daemonblade avatar Jan 24 '23 21:01 daemonblade

@sbidoul having to tweak the configuration for one instance can become an issue when we have to deploy to a variable number of Odoo instances. Is it not possible to namescope the NOTIFY payload with host/main-odoo-pid/dbname to allow multiple job-runners to be active?

@daemonblade in such situations, I don't add queue_job to server_wide_modules, and instead start the job runner independently, so all Odoo instances can share the same config.

Multiple job runners is tricky because it is currently all based on the queue being in memory.

sbidoul avatar Jan 25 '23 07:01 sbidoul

Hi @sbidoul how can I run the queue_job independently? I've tried this PYTHONPATH=/opt/odoo/ python3 -m queue_job.jobrunner but doesn't work, it fails with this error:

AssertionError: Invalid import of queue_job.models.base.Base, it should start with 'odoo.addons'.

b1zzu avatar Sep 07 '23 12:09 b1zzu

Try python3 -m odoo.addons.queue_job.jobrunner.

You'll need to add {queue-job-repo-dir}/setup/queue_job to PYTHONPATH or install odoo-addon-queue_job with pip.

sbidoul avatar Sep 07 '23 12:09 sbidoul