← Back to team overview

openerp-expert-framework team mailing list archive

Re: OpenERP and Websockets

 

On 11/29/2012 09:58 AM, Alexis de Lattre wrote:
This recent blog post http://www.openerp.com/node/1277 says :
<<

We already have a few ideas that are in our development backlog:

Be "real time" using websockets rather than http. Emails and answers
should work like a chat if both the sender and the recipient are active
at the same time. A small conversation is often more efficient than a
series of emails back and forth to take a decision.
  >>

Could we know more about these plans ? What is possible in OpenERP 7.0
framework if I want to trigger an action on the client side ?

I can say a few words about that, but nothing is definitive yet, and OpenERP 7.0 is not likely to include any of this.

There are many use cases for which we need a server-push mechanism, and yours is one more example. At the moment there isn't anything built-in in the framework, so your main option if you want to do it efficiently without external tools is to implement your own long-polling stack. This works well enough if the OpenERP server is running in mono-process mode, with multi-threaded workers. However it fails in multi-process, mono-threaded mode (typical 6.1 Gunicorn deployment mode), as your workers will quickly be blocked by long-polling requests, and the server will stop responding.

We're not yet sure how to solve this, but one approach is to switch to multi-threaded workers also in multiprocess mode, getting the advantages of both worlds. It would allow long-polling requests without causing worker starvation, and still use multiple cores. We could use that opportunity to switch to gevent[1] greenlets[2] in order to increase the server throughput. Gunicorn has a gevent worker mode, so that works, but using greenlets offers a few extra challenges that have yet to be solved.

[1] http://gevent.org/
[2] http://en.wikipedia.org/wiki/Green_threads


References