2016-12-07 30 views
0

我開發了一些模塊,它有一些全局變量。 該模塊正常運行與odoo的正常執行。 但在服務器中的一個,如果我們通過Odoo workers給出全局變量的錯誤

--workers改變odoo工人= 5

然後在fields_view_get方法,而我試圖訪問該值我沒有得到的值並且它會產生變量未定義的錯誤或者有時沒有任何類型沒有屬性。

Gunicorn + Odoo也出現同樣的問題。

請提供建議或參考(如有)。 所有的建議表示讚賞。

代碼:

@api.model 
def fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False): 
    global lims_config 
    res = super(lims_dashboard_graph, self).fields_view_get(
     view_id=view_id, view_type=view_type, toolbar=toolbar, submenu=submenu) 
    self = self.with_context(self._context) 
    if view_type == 'graph' and lims_config.get('graph_view') == 'bar': 
     print "\n BAR---Context--", self._context 
     doc = etree.XML(res['arch']) 
     node = doc.xpath("//field[@name='date']")[0] 
     if lims_config.get('interval'): 
      node.set('interval', lims_config.get('interval')) 
     res['arch'] = etree.tostring(doc) 
    return res 
+0

你能向我們展示'fields_view_get'方法,以便我們可以重現錯誤嗎? – danidee

+0

@ danidee,感謝您的快速提示,在這裏您可以看到問題的方法 –

回答

1

你的Python類是由框架實例化只有一次,同一個實例用於所有數據庫訪問。在使用Odoo中的類變量時,請記住這一點,特別是在爲其分配值時。

另外,請記住,您的類實例可能被垃圾清理並重新初始化。

當您使用工人時,會產生更多的python進程,因此會創建更多類的實例,而不知道是否發生了正確的初始化。

底線:做不是在Odoo中使用全局變量,總會有更好的辦法。例如,您可以使用odoo提供的某個字段來保存您想要使用的某些數據。可能只會存儲在數據庫中供您使用的字符或文本字段。