Odoo 14从V13升级后定时任务失败,求调试修复方案
Odoo 13升级至14后定时任务崩溃及服务器频繁重启的解决方法
问题定位
从错误栈可以明确,崩溃由库存调度器定时任务触发,核心流程异常点:
- 定时任务执行库存调度器(
run_scheduler) - 在查找库存规则(
stock_rule)的SQL查询环节执行失败,直接引发服务器重载
当前日志未显示具体SQL错误信息,需进一步调试获取关键报错细节。
紧急缓解步骤
先终止服务器频繁重启,再开展排查:
- 临时禁用问题定时任务:进入「设置 → 技术 → 自动化 → 定时任务」,找到名为「Run Scheduler」(或中文「运行调度器」)的任务,设置为禁用状态。
深入调试方法
- 开启调试日志:修改Odoo配置文件,将
log_level设为debug,或启动时添加参数--log-level=debug,重启后查看完整日志,获取SQL执行失败的具体错误(如字段缺失、外键关联失效等)。 - 手动触发任务:开启调试模式,手动执行该定时任务,直接查看界面弹出的错误提示,比日志更直观。
- 检查数据完整性:
- 执行SQL查询无效库存规则:
SELECT id, name, route_id, warehouse_id FROM stock_rule WHERE route_id NOT IN (SELECT id FROM stock_route) OR warehouse_id NOT IN (SELECT id FROM stock_warehouse); - 检查补货点配置:确认是否存在产品设置了补货点,但未绑定有效采购路线的情况。
- 执行SQL查询无效库存规则:
修复方案
方案1:修复失效数据记录
若调试发现是无效库存规则/路线导致:
- 删除或修改SQL查询出的无效
stock_rule记录 - 为缺失路线的产品重新配置库存路线
- 清理未关联仓库/位置的无效补货点
方案2:修复模块继承冲突
错误栈显示pos_session和product_expiry模块均重写了_run_scheduler_tasks方法,可能是升级后继承逻辑冲突:
- 重新升级
point_of_sale和product_expiry模块,确保其与Odoo14的stock模块兼容 - 检查自定义模块是否重写了库存调度相关方法,若有需适配Odoo14的API规范
方案3:添加异常捕获避免崩溃
修改定时任务的执行代码,添加异常捕获,防止单个任务失败导致服务器重启:
- 进入定时任务对应的服务器动作配置页面
- 将原代码:
修改为:env['procurement.group'].run_scheduler()import logging _logger = logging.getLogger(__name__) try: env['procurement.group'].run_scheduler() except Exception as e: env.cr.rollback() _logger.error("库存调度器执行失败: %s", str(e))
内容的提问来源于stack exchange,提问作者onorua
相关产品推荐
相关产品推荐

