首页 > 系统相关 >odoo16开启gevent多进程,提高性能及启用消息推送

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

时间:2023-10-06 21:55:07浏览次数:44  
标签:set odoo16 header gevent proxy odoo 推送

原文地址: 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;
}

标签:set,odoo16,header,gevent,proxy,odoo,推送
From: https://www.cnblogs.com/pythonClub/p/17745129.html

相关文章

  • 如何修改尚未推送的提交信息?
    内容来自DOChttps://q.houxu6.top/?s=如何修改尚未推送的提交信息?我在提交信息中写错了东西。我该如何更改信息?该提交尚未推送。如何修改最近提交的提交信息gitcommit--amend这将打开您的编辑器,允许您更改最近提交的提交信息。此外,您还可以在命令行中直接设置提交信......
  • 视频融合/监控汇聚平台EasyCVR如何推送本地录像视频文件进行AI视频智能分析?
    安防视频监控平台EasyCVR是一个具有强大拓展性、灵活的视频能力和轻便部署的平台。它支持多种主流标准协议,包括国标GB28181、RTSP/Onvif、RTMP等,还可以支持厂家的私有协议和SDK接入,例如海康Ehome、海大宇等设备的SDK。该平台不仅拥有传统安防视频监控的功能,还具备接入AI智能分析的......
  • 启动Harbor,推送image
    启动harbor安装步骤省略。如需手动启动Harbor,可在Harbor安装路径下执行:docker-composeup-d在harbor的web界面中,新建项目,给出名称,比如greenplum在Docker上配置Harbor仓库2.1docker登录harbor[root@k8s-masterdata]#dockerloginhttp://10.10.10.187Username......
  • SSE 推送技术
    SSE和WebSocket的区别数据推送方面SSE是服务端像客户端的单向通信的技术。WebSocket是双向通讯的技术协议方面SSE是基于HTTP协议的长连接,超时后可以自动重连WebSocket是基于ws协议的,建立双向连接实现通讯的订阅的返回值必须是SseEmitter,返回的数据类型为事件流。执行返回类型的的......
  • 史诗级智能化!Win11 23H2今天正式推送:附升级方法
    Win1123H2今天正式推送,加入了Windows人工智能Copilot(智能副驾),强大的创作者工具可以让用户更轻松、快速地将想法变为现实。此外,新版还将带来更多功能,包括正在扩展语音访问功能,并为讲述人功能新增了新的自然语音,以保障在默认状态下Windows11的无障碍化体验。同时,微软正在通过采......
  • 极光笔记 | 聊一聊推送系统中事件驱动架构的应用
    微服务间通信方式主要有2种:RPC和消息传递。通常来说在请求/响应的场景下使用RPC更加合适,具体实现通常是RESTAPI或者基于长链接的协议(例如gRPC/Thrift/ZeroICE等)。两个服务有比较强的依赖关系,调用者依赖被调用者的处理结果,调用者处理该请求被堵塞以等待响应结果,同时还要进行负载......
  • 【HMS Core】推送热门合集2
    ​【关键字】推送服务、未配置、受限、机型 【问题描述1】可以正常收到推送消息,推送功能也没问题,自分类权限也可以正常使用,以下截图中的状态为什么还是显示“未配置”?​【解决方案】如果以下功能开通,会显示已配置,显示未配置不影响使用​ 【问题描述2】如用户需要收到......
  • docker推送镜像到私仓
    1.私仓搭建和上传镜像  参考链接:https://blog.csdn.net/xiaoyu070321/article/details/130871703  dockerpullregistry//下载镜像  运行私有库registry(相当于本地有个是有dockerhub)  dockerrun-d-p5000:5000-v/huchao/myregistry/:/tmp/registry......
  • Odoo16.0 支付宝模块
    odoo16.0官方将支付宝模块弃用了,但是需求还在,我们也不太可能去使用推荐的asipay,因此,我们决定,自己手动实现它。安装与配置首先,我们在应用中安装我们的支付宝模块: 安装好之后,我们进入配置界面: 这里对各个参数简单介绍一下:支付宝APPID:我们在支付宝开放平台申请的应用......
  • odoo16 顺丰速运
    随着顺丰官方升级了新的API接口,我们的顺丰模块也顺应时代潮流进行了全新升级,本文将给大家简单介绍一下新顺丰速运模块的功能。安装与配置首先,与老版本不同的是,我们把顺丰的配置参数放到了承运方设置里。 我们在这里填入在丰桥平台设置的客户编码、校验码和月结编号等参数。......