跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

  1. 主页
  2. 版块
  3. Odoo 开发与实施交流
  4. odoo16开启gevent多进程,提高性能及启用消息推送

odoo16开启gevent多进程,提高性能及启用消息推送

已定时 已固定 已锁定 已移动 Odoo 开发与实施交流
1 帖子 1 发布者 975 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • G 离线
    G 离线
    guohuadeng
    写于 最后由 编辑
    #1

    原文地址: https://www.odooai.cn/blog/odoo-install-deploy-6/odoo-gevent-web-socket-boost-setup-286
    odoo16有一个最大的性能提升,就是从longpolling改成了web socket的方式来推送消息。这个改进顺应了互联网应用的趋势,同时这也是我们整合AI服务的基础,因为AI都是通过消息推送来进行服务的,而且是高频推送。

    以下是启用Web Socket后,Ai主动推送信息回答的效果,使用阿里通义千问,3秒内就响应了。

    替代文字

    odoo16启用Web Socket

    为什么必须启用Web Socket
    Odoo一直以来都是一个基于互联网架构的ERP,绝大多数方面她都做得很好。

    但在消息推送上,在odoo16版本以前,都是使用的http协议长连接long-polling方式,这种方式的好处是协议简单标准化,我们二开省事很多。但缺点也很明显,就是大量占据服务器资源。详情可Bing搜索一下 long polling 与 web socket 即可了解。

    随着网络应用不断发展,现在绝大多数的浏览器和App都支持web socket了。因此,在 odoo16上,终于改用了 web socket 模式,虽然开发上增加了一些难度,但却带来了巨大的性能提升。

    特别在针对物联网应用如RFID应用,Ai应用如我们的Ai服务中心,这类应用都需要高频的推送消息。

    Web Socket好处
    需要主动推送的应用通过 web socket实现,就提升明显了。
    推送更快。每次信息互动保持一个唯一连接,消除长连接(长轮询)的延迟问题
    内容更精简。由于不使用http协议,无需发文件头等额外信息。
    全双工异步。客户端和服务器都可以独立地相互传输消息。
    配置简单。在大型网络中,WebSockets 无需任何配置即可通过大多数防火墙。

    odoo端配置
    参考官方文档
    系统配置处,配置好 odoo.conf ,一般使用默认即可,参考

    https://www.odooai.cn/documentation/16.0/zh_CN/administration/install/deploy.html

    如果需要自行定制端口,这个一般在国企或者有信创要求的单位很常见,就使用 gevent_port 参数。如 odoo.conf 中

    gevent_port = 8072
    同时注意

    proxy_mode = True

    Nginx 端配置
    同样参考上述官方文档即可,配置好 upstream即可。

    Windows 内特殊处理
    由于Windows本身是不直接直接Python的多进程的,那么我们要手动再启动一个 odoo 进程,f增加使用 gevent,这时把 Websocket启用,比如执行指令中增加

    %CD%\runtime\python3\python3 %CD%\source\odoo-bin gevent -c %CD%\odoo.conf --update=""
    在我们的绿色版中已有内置,将 gevent 相关执行取消注释就成。

    参考 odoo智能版下载中 odoo16绿色高速版处理

    https://gitee.com/odooai/odoo-ai

    开发端Pycharm端配置
    开发端因为要自定义启动odoo,故同样要配置好 gevent。

    参考下图,我们在启动正常开发Python进程时,要启一个 gevent 进程

    省事可直接使用Boost提速模块
    主要是针对Windows用户,在odoo13~16版本中,如果你没有配置好 long-polling 或者 web socket,你会发现你的 odoo 经常会停滞不响应,这就是因为没有配置好消息推送,导致odoo响应超时。

    此时,你停止相关的推送请求即可,这个需要前端 js 及后端 py 一起处理,我们有相关模块,安装后即停止消息推送,极大的减少了 odoo 的资源使用。

    市场搜索 app_odoo_boost 即可

    https://apps.odoo.com/apps/modules/browse?search=app_odoo_boost

    适用以下场景

    如果你仅使用 odoo 的进销存,生产等各种功能模块,不需要讨论及Ai辅助等功能
    在Windows下开发,只处理业务功能开发,不需要即时推送

    Nginx实例
    完整Nginx.conf示例

    参考官方文档即可

    #odoo server
    upstream odoo {
    server 127.0.0.1:8069;
    }
    upstream odoochat {
    server 127.0.0.1:8072;
    }
    map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
    }

    http -> https

    server {
    listen 80;
    server_name odoo.mycompany.com;
    rewrite ^(.*) https://$host$1 permanent;
    }

    server {
    listen 443 ssl;
    server_name odoo.mycompany.com;
    proxy_read_timeout 720s;
    proxy_connect_timeout 720s;
    proxy_send_timeout 720s;

    SSL parameters

    ssl_certificate /etc/ssl/nginx/server.crt;
    ssl_certificate_key /etc/ssl/nginx/server.key;
    ssl_session_timeout 30m;
    ssl_protocols TLSv1.2;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;

    log

    access_log /var/log/nginx/odoo.access.log;
    error_log /var/log/nginx/odoo.error.log;

    Redirect websocket requests to odoo gevent port

    location /websocket {
    proxy_pass http://odoochat;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    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;
    }

    Redirect requests to odoo backend server

    location / {
    # Add Headers for odoo proxy mode
    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;
    proxy_redirect off;
    proxy_pass http://odoo;
    }

    common gzip

    gzip_types text/css text/scss text/plain text/xml application/xml application/json application/javascript;
    gzip on;
    }

    用产品说话,odoo专业实施开发培训_广州尚鹏,供应链制造服装外贸家具生鲜开源ERP

    https://www.sunpop.cn

    1 条回复 最后回复
    0

    • 登录

    • 没有帐号? 注册

    • 登录或注册以进行搜索。
    • 第一个帖子
      最后一个帖子
    0
    • 版块
    • 标签
    • 热门
    • 用户
    • 群组