2016-12-07 196 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提供的某个字段来保存您想要使用的某些数据。可能只会存储在数据库中供您使用的字符或文本字段。