You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Odoo 11 CE在CentOS系统打印PDF报告加载过慢

解决Odoo 11 CE CentOS环境下PDF报告生成卡顿(卡在process.communicate())的方案

我之前在CentOS上部署Odoo 11 CE时也碰到过几乎一模一样的问题,PDF报告生成卡在process.communicate()这一步,折腾了好几种方法才解决,给你分享几个排查和修复的思路:

1. 补全wkhtmltopdf依赖库并验证版本兼容性

CentOS下的wkhtmltopdf经常因为图形类依赖缺失导致静默卡住,先执行命令补全依赖:

yum install -y libXext libXrender libfontconfig libX11 openssl-devel libjpeg-turbo-devel

另外一定要注意:Odoo 11官方推荐使用wkhtmltopdf 0.12.5版本(区分32/64位),不要用最新版——新版本的API和Odoo 11的适配性很差,这是很多人踩过的坑。

2. 脱离Odoo单独测试wkhtmltopdf

先绕过Odoo,直接用命令行执行wkhtmltopdf生成测试PDF,确认工具本身是否正常:

wkhtmltopdf https://www.odoo.com test.pdf

如果这个命令也卡住,那问题肯定出在wkhtmltopdf或系统依赖上;如果能正常生成,再聚焦到Odoo的配置排查。

3. 调整report.url参数与权限设置

  • 确保report.url设置的是Odoo能直接访问的地址,比如用服务器内网IP(http://192.168.x.x:8069)或http://localhost:8069,不要用外网域名——避免DNS解析或网络延迟导致的阻塞。
  • 检查Odoo运行用户(比如odoo用户)对wkhtmltopdf执行文件和临时目录的权限:
chmod +x /usr/local/bin/wkhtmltopdf  # 假设你的wkhtmltopdf安装路径在此
chmod 777 /tmp  # 临时放开权限测试,确认问题后再调整为合理权限

4. 给process.communicate()添加调试与超时处理

这个方法卡住通常是因为子进程(wkhtmltopdf)没有正常输出或在等待输入。你可以临时修改Odoo源码添加调试信息(测试后记得还原):
在odoo11/odoo/addons/base/ir/ir_actions_report.py的_run_wkhtmltopdf()方法中,process.communicate()之前加入:

import logging
_logger = logging.getLogger(__name__)
_logger.info(f"执行的wkhtmltopdf命令: {' '.join(cmd)}")
_logger.info("开始与子进程通信...")

同时可以给communicate()加上超时时间,强制终止卡住的进程并获取错误信息:

try:
    out, err = process.communicate(timeout=60)
except subprocess.TimeoutExpired:
    process.kill()
    out, err = process.communicate()
    _logger.error(f"wkhtmltopdf执行超时,错误信息: {err}")

通过日志就能明确看到是命令参数问题,还是wkhtmltopdf本身的报错。

5. 强制wkhtmltopdf使用无图形化模式

CentOS默认没有图形环境,wkhtmltopdf可能会因为等待图形资源卡住。你可以添加headless相关参数:
找到Odoo源码中构造wkhtmltopdf命令的代码块,在参数列表里追加:

cmd.extend(['--no-sandbox', '--disable-gpu'])

或者直接在Odoo系统参数中添加report.wkhtmltopdf.args,值设为--no-sandbox --disable-gpu。


内容的提问来源于stack exchange,提问作者Mitul Shingala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:36:35