[Openerp-community] Question about gunicorn, nginx, and workers
Hi Community, I have some question regarding perfomance in Odoo. I have learn about gunicorn, nginx. But I still confuse what is the advantage when we use it. I still don't know the purpose of it and how it works. I have search in google, and there's no enough explanation on it. There's just a tutorial to configure it but there's no explanation about the benefit of it. Can someone explain me a bit about that? and about worker in openerp config. should we give the value to the worker like 5? what is the difference between we give the value to 0, or more than 0? Should we use all this feature when we have like 50 users in our database? Because even we don't use it all these features, it still work smooth. Just the problem is when we want to export and import a lot of records more than 2k, it will be very slow, and when the other user use the Odoo it will be very slow too. So when we use all that feature, we can solve this problem? - Hans Yonathan OpenERP Support FALINWA Limited Expert in Finance Business Intelligence OpenERP Silver Partner Website: www.falinwa.com -- View this message in context: http://openerp-community.2306076.n4.nabble.com/Question-about-gunicorn-nginx-and-workers-tp4646585.html Sent from the OpenERP Community mailing list archive at Nabble.com. ___ Mailing list: https://launchpad.net/~openerp-community Post to : openerp-community@lists.launchpad.net Unsubscribe : https://launchpad.net/~openerp-community More help : https://help.launchpad.net/ListHelp
Re: [Openerp-community] Reclaiming context
Hello, +1 for Pedro proposition As the function is decorated with @tools.ormcache(skiparg=2) it should not have a too big negative impact on performance. We may initialise an empty context if it really causes performance issues. context_get may also be optimized to use a read instead of a browse. Regards Nicolas 2014-08-28 18:45 GMT+02:00 Pedro Manuel Baeza Romero pedro.ba...@gmail.com : It looks good to me also, but one detail, put: *if context is None:context = self.pool['res.users'].context_get(cr, uid)* To not make the query when context dictionary is already {} (maybe you can be interested in not propagating user context and you pass explicitly context={} in your call to the function). Regards. 2014-08-28 18:35 GMT+02:00 Raphael Valyi rva...@gmail.com: Hello Sandy, I think this is a great idea. It has been debated a few times if it was a bug that the workflow engine doesn't propagate the context. Well in my opinion that's valid to say the context is a compound object made by the user settings, overridden eventually by the parameters of the HTTP request scope. These last parameters stand for user interface details like from which menu you are trying to act on a record or what are the currently selected records. It's normal that the impact of these parameters is limited and it's normal that you can also imagine load the persisted data right from the database instead and still get the right business logic. So in a word, even in the workflow which is supposed to be able to act right on persisted data, it's okay to loose the track of the HTTP request params but as you mentioned this is not a reason to loose the context related to the user settings (language, timezone...) I personally like your proposal for v7. As for v8 the similar logic should happen in the @api decorator providing the context on self and I am not sure, but may be it's already implemented like that. Thanks for the proposition! -- Raphaël Valyi Founder and consultant http://twitter.com/rvalyi http://twitter.com/#!/rvalyi +55 21 3942-2434 www.akretion.com On Thu, Aug 28, 2014 at 1:04 PM, Sandy Carter sandy.car...@savoirfairelinux.com wrote: Hello community, While debugging yet another translation error in Odoo 7.0, I came up with a simple way to reclaim lost contexts in functions. The bug I was fighting is one where workflow actions do not pass any contexts. This bug manifests as chattr messages in english when using the workflows. As I don't have the time to fix it in the server, nor am I ready to jump through the hoops to get that fix integreated in the Odoo, I found a way to fix this bug in my module. The way I countered the bug in my module is in the write function where I would usually start with if context is None: context = {} or context = context or {} In this case it was None since the workflow mechanism would not have a context. I saw that since I have the user id, I can still get the context for this user. I replaced the familiar context check with: context = context or self.pool['res.users'].context_get(cr, uid) I find this simple enough. The line is under 80 characters and it can replace the usual context check. Furthermore it assures that everything done within this function and its parent functions have at least the language in the context, something I have been struggling with a lot lately. What does the community think of this as a possible standard for modules, replacing the usual if context is None lines. Are there possible drawbacks to using this line? Thank you for you input! -- Sandy Carter Consultant en logiciel libre Développeur OpenERP Savoir-faire Linux Inc. 514-276-5468 poste 142 http://www.savoirfairelinux.com sandy.car...@savoirfairelinux.com ___ Mailing list: https://launchpad.net/~openerp-community Post to : openerp-community@lists.launchpad.net Unsubscribe : https://launchpad.net/~openerp-community More help : https://help.launchpad.net/ListHelp ___ Mailing list: https://launchpad.net/~openerp-community Post to : openerp-community@lists.launchpad.net Unsubscribe : https://launchpad.net/~openerp-community More help : https://help.launchpad.net/ListHelp ___ Mailing list: https://launchpad.net/~openerp-community Post to : openerp-community@lists.launchpad.net Unsubscribe : https://launchpad.net/~openerp-community More help : https://help.launchpad.net/ListHelp -- Nicolas Bessi Senior ERP consultant Business Solution technical manager Camptocamp SA PSE A CH-1015 Lausanne http://openerp.camptocamp.com Direct: +41 21 619 10 26 Office: +41 21 619 10 10 ___ Mailing list: https://launchpad.net/~openerp-community Post to :
Re: [Openerp-community] Question about gunicorn, nginx, and workers
Hi Hans, By default (without the 'workers' setting), OpenERP will be in threading mode for handling concurrent requests. Because of python's 'GIL' limitation, python application (OpenERP in this case) has no ability to scale for multiple cores. However, OpenERP can switch to multi-process mode (by configuring the 'workers' setting) to take advantage of the multi-core on your server. Gunicorn is not needed since OpenERP V7 as the feature is already implemented in OpenERP. Setting workers is really easy, just follow the following formula: --workers=$((1+${CORES}*2)) (so, 2 cores on the server, workers should be 5, 4 cores to 9, and so on and so forth) workers setting will only boost up the concurrent process. The importing process causing the system slow could be due to other reason. Hope this information will help. Good luck. Tony Gu Shine IT Co. Ltd. http://www.openerp.cn On 08/29/2014 02:35 PM, Falinwa Hans wrote: Hi Community, I have some question regarding perfomance in Odoo. I have learn about gunicorn, nginx. But I still confuse what is the advantage when we use it. I still don't know the purpose of it and how it works. I have search in google, and there's no enough explanation on it. There's just a tutorial to configure it but there's no explanation about the benefit of it. Can someone explain me a bit about that? and about worker in openerp config. should we give the value to the worker like 5? what is the difference between we give the value to 0, or more than 0? Should we use all this feature when we have like 50 users in our database? Because even we don't use it all these features, it still work smooth. Just the problem is when we want to export and import a lot of records more than 2k, it will be very slow, and when the other user use the Odoo it will be very slow too. So when we use all that feature, we can solve this problem? - Hans Yonathan OpenERP Support FALINWA Limited Expert in Finance Business Intelligence OpenERP Silver Partner Website: www.falinwa.com -- View this message in context: http://openerp-community.2306076.n4.nabble.com/Question-about-gunicorn-nginx-and-workers-tp4646585.html Sent from the OpenERP Community mailing list archive at Nabble.com. ___ Mailing list: https://launchpad.net/~openerp-community Post to : openerp-community@lists.launchpad.net Unsubscribe : https://launchpad.net/~openerp-community More help : https://help.launchpad.net/ListHelp ___ Mailing list: https://launchpad.net/~openerp-community Post to : openerp-community@lists.launchpad.net Unsubscribe : https://launchpad.net/~openerp-community More help : https://help.launchpad.net/ListHelp
Re: [Openerp-community] Reclaiming context
On 28/08/2014 18:04, Sandy Carter wrote: Hello community, While debugging yet another translation error in Odoo 7.0, I came up with a simple way to reclaim lost contexts in functions. The bug I was fighting is one where workflow actions do not pass any contexts. This bug manifests as chattr messages in english when using the workflows. As I don't have the time to fix it in the server, nor am I ready to jump through the hoops to get that fix integreated in the Odoo, I found a way to fix this bug in my module. The way I countered the bug in my module is in the write function where I would usually start with if context is None: context = {} or context = context or {} In this case it was None since the workflow mechanism would not have a context. I saw that since I have the user id, I can still get the context for this user. I replaced the familiar context check with: context = context or self.pool['res.users'].context_get(cr, uid) Ideally this would be done by the workflow engine, but I'm pretty sure this won't make it to official 7.0 and not sure for OCB. But I do like the version you propose *a lot*. Let's use it more! -- Alexandre Fayolle Chef de Projet Tel : + 33 (0)4 79 26 57 94 Camptocamp France SAS Savoie Technolac, BP 352 73377 Le Bourget du Lac Cedex http://www.camptocamp.com ___ Mailing list: https://launchpad.net/~openerp-community Post to : openerp-community@lists.launchpad.net Unsubscribe : https://launchpad.net/~openerp-community More help : https://help.launchpad.net/ListHelp
Re: [Openerp-community] Reclaiming context
Really good idea Sandy ! I totaly approve this change 2014-08-29 9:34 GMT+02:00 Alexandre Fayolle alexandre.fayo...@camptocamp.com: On 28/08/2014 18:04, Sandy Carter wrote: Hello community, While debugging yet another translation error in Odoo 7.0, I came up with a simple way to reclaim lost contexts in functions. The bug I was fighting is one where workflow actions do not pass any contexts. This bug manifests as chattr messages in english when using the workflows. As I don't have the time to fix it in the server, nor am I ready to jump through the hoops to get that fix integreated in the Odoo, I found a way to fix this bug in my module. The way I countered the bug in my module is in the write function where I would usually start with if context is None: context = {} or context = context or {} In this case it was None since the workflow mechanism would not have a context. I saw that since I have the user id, I can still get the context for this user. I replaced the familiar context check with: context = context or self.pool['res.users'].context_get(cr, uid) Ideally this would be done by the workflow engine, but I'm pretty sure this won't make it to official 7.0 and not sure for OCB. But I do like the version you propose *a lot*. Let's use it more! -- Alexandre Fayolle Chef de Projet Tel : + 33 (0)4 79 26 57 94 Camptocamp France SAS Savoie Technolac, BP 352 73377 Le Bourget du Lac Cedex http://www.camptocamp.com ___ Mailing list: https://launchpad.net/~openerp-community Post to : openerp-community@lists.launchpad.net Unsubscribe : https://launchpad.net/~openerp-community More help : https://help.launchpad.net/ListHelp ___ Mailing list: https://launchpad.net/~openerp-community Post to : openerp-community@lists.launchpad.net Unsubscribe : https://launchpad.net/~openerp-community More help : https://help.launchpad.net/ListHelp