解决odoo开启workers后bus.bus的问题
问题原因:
workers > 0 后会有很多线程在8069端口上,几个cron线程8069(max-cron-threads)。一个gevent线程在端口8072上(longpolling-port)。这里的问题就在8072上,web会用8069请求longpolling。所以http出错。
exception: bus.bus unavailable
解决思路:
安装返向代理,用http://host:80代理 http://localhost:8069/ 和 http://localhost:8072/longpolling即可
可以直接在docker里搞个nginx镜像,反向代理推荐nginx,好用不多说
附1 nginx 的conf 文件 :
upstream odooapp {
server 10.91.8.62:8069;
}
#upstream odoolongpolling {
# server 10.91.8.62:8072/longpolling;
#}
server {
listen 80;
server_name localhost;
client_max_body_size 1G;
access_log /var/log/nginx/local.log main;
location / {
proxy_connect_timeout 3600s;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
send_timeout 3600;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://odooapp;
}
location /longpolling/ {
proxy_connect_timeout 3600s;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
send_timeout 3600;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#proxy_pass http://odoolongpolling;
proxy_pass http://10.91.8.62:8072/longpolling/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
client_header_buffer_size 512k;
large_client_header_buffers 4 512k;
}
附2 docker-compose 文件:
version: '2'
services:
nginx:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./conf:/etc/nginx/conf.d
- ./logs:/var/log/nginx
restart: always