• Odoo设置workers后的错误解决办法


    参考:

    http://blog.sina.com.cn/s/blog_7cb52fa80102vrri.html

    odoo 在配置workers后会有如下错误

    Traceback (most recent call last):

      File "/opt/odoo/openerp/http.py", line 530, in _handle_exception

        return super(JsonRequest, self)._handle_exception(exception)

      File "/opt/odoo/openerp/http.py", line 567, in dispatch

        result = self._call_function(**self.params)

      File "/opt/odoo/openerp/http.py", line 303, in _call_function

        return checked_call(self.db, *args, **kwargs)

      File "/opt/odoo/openerp/service/model.py", line 113, in wrapper

        return f(dbname, *args, **kwargs)

      File "/opt/odoo/openerp/http.py", line 300, in checked_call

        return self.endpoint(*a, **kw)

      File "/opt/odoo/openerp/http.py", line 796, in __call__

        return self.method(*args, **kw)

      File "/opt/odoo/openerp/http.py", line 396, in response_wrap

        response = f(*args, **kw)

      File "/opt/odoo/addons/bus/bus.py", line 188, in poll

        raise Exception("bus.Bus unavailable")

    原因:

    工人> 0会有很多线程在端口8069上。

    你也会有几个cron线程8069(max-cron-threads)。

    一个gevent线程在端口8072上(longpolling-port)。

    这里的问题就在8072上,web会用8069请求longpolling。所以http出错。

    解决办法:

    通过设置反向代理的方式来解决

    反向代理设置参考:https://www.myfreax.com/add-nginx-reverse-proxy-for-odoo/

    1、安装nginx作为反向代理,需要配置nginx的conf文件,其文件内容加入:

    upstream odoo {
     server 127.0.0.1:8069;
    }
    
    upstream odoo-chat {
     server 127.0.0.1:8072;
    }
    
        server {
            listen       80;
            server_name  localhost;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
       proxy_read_timeout 720s;
       proxy_connect_timeout 720s;
       proxy_send_timeout 720s;
       proxy_set_header X-Forwarded-Host $host;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
       proxy_set_header X-Real-IP $remote_addr;
    
    
    location / {
            proxy_pass        http://odoo;
            proxy_redirect    off;
    }
    
    location /longpolling/ {
            proxy_pass        http://odoo-chat;
            proxy_redirect    off;
    }
    
    
     location ~* /web/static/ {
           proxy_cache_valid 200 90m;
           proxy_buffering    on;
           expires 864000;
           proxy_pass http://odoo;
      }

    2、修改odoo.conf文件,设置为代理,

    workers = 3
    proxy_mode = True
    
    #如果需要禁止外部机器访问8069端口,需要加入下面的配置
    xmlrpc_interface = 127.0.0.1
    netrpc_interface = 127.0.0.1

    至此,重启nginx和odoo服务后,问题将可以得到解决.

  • 相关阅读:
    JavaScript中创建对象的几种模式
    Vue学习5:条件渲染
    Vue学习4:class与style绑定
    Vue学习3:计算属性computed与监听器
    Vue学习2:模板语法
    普通递归与优化递归
    new操作符具体干了什么呢?
    各种形式存放token
    用es6的Array.reduce()方法计算一个字符串中每个字符出现的次数
    ES6 对象的解构赋值
  • 原文地址:https://www.cnblogs.com/kxxx/p/12122888.html
Copyright © 2020-2023  润新知