參考:
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服務后,問題將可以得到解決.
