OpenERP v6.1新特性解讀 (三) 技術

內核優化

原來的osv_memory(如今名爲TransientModel)作了很大改進,如今已是一個特殊的普通osv(如今名爲Model),這意味着它確實存在數據庫裏面,可是它會在使用事後自動刪除(例如某個統計計算完畢或者某些記錄已經建立了)。這個改進有如下好處:python

  • 底層代碼只有一個,更容易維護。
  • 具備相同的模型,這意味着約束(例如外鍵)都是可執行的
  • 更好的性能,數據庫幾乎徹底是無狀態(仍然有一些緩存)

支持WSGI,能夠在一個兼容WSGI的服務器上運行OpenERP server,再加上OpenERP幾乎無態的特性。這意味着你能夠在WSGI服務器上運行多個服務器進程:你終於能夠用盡你的多核CPU!例如用 Gunicorn ,一切的維護都變得簡單了,Gunicorn 將監控者進程。例如殺死一個已經掛起的進程,防止內存泄露影響系統。web

還有幾件縮短建立賬套時間的改進:能高效率使用框架加載翻譯並寫入。另外一個改進就是(轉存和恢復)的賬套時候的緩存。這些都在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'),
}
相關文章
相關標籤/搜索