OpenERP缓存功能

Don*_*kby 3 python caching openerp

我想在我的OpenERP模块中缓存一些结果,所以我挖了一下并找到了缓存装饰器.不幸的是,我能找到的大多数文档都在类声明中:

使用它作为您计划缓存的函数的装饰器超时:0 =没有超时,否则以秒为单位

任何人都可以推荐一个如何使用它的好例子吗?是否存在需要避免的已知问题?

Don*_*kby 5

在挖掘了一些之后,我发现的最简单的例子是ir_model_data._get_id()方法:

@tools.cache()
def _get_id(self, cr, uid, module, xml_id):
    ids = self.search(cr, uid, [('module','=',module),('name','=', xml_id)])
    if not ids:
        raise ValueError('No references to %s.%s' % (module, xml_id))
    # the sql constraints ensure us we have only one result
    return ids[0]
Run Code Online (Sandbox Code Playgroud)

看起来您只需选择要缓存的模型方法,然后将缓存添加为装饰器.如果某些事件应该像这个update()方法一样清除缓存,则使用缓存方法作为缓存对象:

            if not result3:
                self._get_id.clear_cache(cr.dbname, uid, module, xml_id)
Run Code Online (Sandbox Code Playgroud)

默认情况下,在缓存(大多数情况下为游标和用户ID)时,将忽略方法的前两个参数.

这一切都只是基于略读代码.我很想听到任何实际使用它的人的反馈.