OpenERP v6.1新特性解读 (三) 技术

内核优化

原来的osv_memory(现在名为TransientModel)做了很大改进,现在已经是一个特殊的普通osv(现在名为Model),这意味着它确实存在数据库里面,但是它会在使用过后自动删除(例如某个统计计算完毕或者某些记录已经创建了)。这个改进有以下好处:

  • 底层代码只有一个,更容易维护。
  • 具有相同的模型,这意味着约束(例如外键)都是可执行的
  • 更好的性能,数据库几乎完全是无状态(仍然有一些缓存)

支持WSGI,可以在一个兼容WSGI的服务器上运行OpenERP server,再加上OpenERP几乎无态的特性。这意味着你可以在WSGI服务器上运行多个服务器进程:你终于可以用尽你的多核CPU!例如用 Gunicorn ,一切的维护都变得简单了,Gunicorn 将监控者进程。例如杀死一个已经挂起的进程,防止内存泄露影响系统。

还有几件缩短创建帐套时间的改进:能高效率使用框架加载翻译并写入。另一个改进就是(转存和恢复)的帐套时候的缓存。这些都在OpenERP online上实际使用过。

在销售订单上做过性能测试:

  • 安装一个新的英文帐套
  • 安装一个新的带有语言包的帐套
  • 再创建另外一个新帐套
  • 从web客户端读取一个合作伙伴
  • 一次读1000个订单
  • 读100x10个销售订单

计划任务的多线程处理

现在每一个计划任务在后台都是生成一个线程,这样就不会因为一个计划任务在执行,就阻碍了另外一个计划任务的执行。实现了在负载均衡的情况下多个服务器执行多个进程,每个任务每次只会执行一次

Unaccent

消除法语那些上面的声调,启动server的时候使用 --unaccent(对于国内用户可能不怎么需要这个 :D)

给开发人员

6.1的对象自动实例化了,不再需要显式调用
6.0.x

class res_groups(osv.osv):
_name = 'res.groups'
_columns = {
'name': fields.char('Name'),
}
res_groups()

class res_users(osv.osv):
_name = 'res.users'
_columns = {
'name': fields.char('Name'),
'group_ids': fields.many2many('Groups', 'res.groups'),
}
res_users()

class res_groups2(osv.osv):
_inherit= 'res.groups'
_columns = {
'user_ids': fields.many2many('Users', 'res.users'),
}
res_groups2()

6.1

class res_groups(osv.osv):
_name = 'res.groups'
_columns = {
'name': fields.char('Name'),
'user_ids': fields.many2many('Users', 'res.users'),
}
class res_users(osv.osv):
_name = 'res.users'
_columns = {
'name': fields.char('Name'),
'group_ids': fields.many2many('Groups', 'res.groups'),
}

你可能感兴趣的:(新特性,openerp,6.1,v6.1)