openerp-india team mailing list archive
-
openerp-india team
-
Mailing list archive
-
Message #08410
[Bug 944273] Re: Scheduler is not working when OpenERP is running with gunicorn
Yes, after more investigation I did find that the cron thread is not
being started. I added a call to 'openerp.cron.start_master_thread()' in
openerp.wsgi.core.when_ready and the thread does get started. However,
the scheduled actions are not being processed.
Having looked a bit more at cron.py I've seen that there are a number of
global variables being used - is that going to work in a multi-threaded
environment? Also, I can't see any confirmation that heapq is thread-
safe - the alternative is to use Queue
(http://docs.python.org/library/queue.html), which is thread-safe.
In the meantime, we are currently piloting version 6.1 and the scheduler
plays an important role in our implementation. Do you have a workaround
that will enable us to get the scheduler working when OpenERP is running
with gunicorn?
Thanks
James
--
You received this bug notification because you are a member of OpenERP
Indian Team, which is subscribed to OpenERP Server.
https://bugs.launchpad.net/bugs/944273
Title:
Scheduler is not working when OpenERP is running with gunicorn
Status in OpenERP Server:
Confirmed
Bug description:
The OpenERP scheduler ois not working correctly in version 6.1 when
OpenERP is running using gunicorn. In the initial investigations that
I've done I think that the problem is because each gunicorn worker is
running in a separate thread, so the memory space is different.
OpenERP is designed to be stateless, so this should be fine. However,
in the case of the scheduler, tasks are being pushed and popped from
the heap... which will be different for each process.
I think that a more robust solution would be add the tasks to the
database and the cron Master Thread process would read from the
database (instead of the heap).
This is straightforward to verify: create some scheduled actions that
are due to be run (there are some in the system by default) and start
OpenERP using gunicorn. You should see that the scheduled actions
aren't run. Then compare what happens when OpenERP is started in a
single-threaded manner e.g. ./openerp-server -d dbname. This time
you'll see that the schedule actions are run.
To manage notifications about this bug go to:
https://bugs.launchpad.net/openobject-server/+bug/944273/+subscriptions
References