Skip to Content
Menu
This question has been flagged
1 Reply
5896 Views

Hello,

I have a problem regarding a ir.cron task that runs by a bunch of assets and tries to post them automatically. Said method runs perfectly with 700 depreciation lines but when i take to production where are a considerable larger amount of assets and depreciation lines (558,747) the openerp-server just stops and falls down.

ids = self.search(cr, uid, [('state', '=', 'open')])

        for asset in self.browse(cr, uid, ids):
            for asset_line in asset.depreciation_line_ids:
                if asset_line.move_check:

This code gets all my assets that are open and then try to check for a set of conditions and post it. When it gets to the asset_line.move_check line, it takes a long time and then it kills the proccess, all while keeping the server cpu at 100%.

Any ideas on how i can improve performance on this?

Avatar
Discard
Best Answer

Hi,

You can improve using python multiprocessing.

Thanks

Avatar
Discard
Author

Using module multiprocessing or threading? I was taking that option into consideration. Just wanted to see if someone had encountered something similar somewhere.

Use multiprocessing

Use read not browse, better performance, browse read all field from table, read take only asked field, so better performance.

ids = self.search(cr, uid, [('state', '=', 'open')])
for asset in self.read(cr, uid, ids,['depreciation_line_ids']):
            for asset_line in self.pool.get('account.asset.depreciation.line').read(cr, uid, asset['depreciation_line_ids'],['move_check']):
                if asset_line['move_check']:
Author

Yeah, i am thinking that this is the next natural step, i already got it working with browse, but stil performance is slow and resource consumption high. I have really never used read before, i am going to have to rewrite my entire algorithm.

Related Posts Replies Views Activity
1
Mar 15
5630
2
Jul 22
5036
1
Sep 19
2227
2
Dec 23
41856
1
Apr 15
4306