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

Odoo 14从V13升级后定时任务失败,求调试修复方案

Odoo 13升级至14后定时任务崩溃及服务器频繁重启的解决方法

问题定位

从错误栈可以明确,崩溃由库存调度器定时任务触发,核心流程异常点:

  1. 定时任务执行库存调度器(run_scheduler)
  2. 在查找库存规则(stock_rule)的SQL查询环节执行失败,直接引发服务器重载

当前日志未显示具体SQL错误信息,需进一步调试获取关键报错细节。

紧急缓解步骤

先终止服务器频繁重启,再开展排查:

  • 临时禁用问题定时任务:进入「设置 → 技术 → 自动化 → 定时任务」,找到名为「Run Scheduler」(或中文「运行调度器」)的任务,设置为禁用状态。

深入调试方法

  1. 开启调试日志:修改Odoo配置文件,将log_level设为debug,或启动时添加参数--log-level=debug,重启后查看完整日志,获取SQL执行失败的具体错误(如字段缺失、外键关联失效等)。
  2. 手动触发任务:开启调试模式,手动执行该定时任务,直接查看界面弹出的错误提示,比日志更直观。
  3. 检查数据完整性:
    • 执行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);
      
    • 检查补货点配置:确认是否存在产品设置了补货点,但未绑定有效采购路线的情况。

修复方案

方案1:修复失效数据记录

若调试发现是无效库存规则/路线导致:

  • 删除或修改SQL查询出的无效stock_rule记录
  • 为缺失路线的产品重新配置库存路线
  • 清理未关联仓库/位置的无效补货点

方案2:修复模块继承冲突

错误栈显示pos_session和product_expiry模块均重写了_run_scheduler_tasks方法,可能是升级后继承逻辑冲突:

  • 重新升级point_of_sale和product_expiry模块,确保其与Odoo14的stock模块兼容
  • 检查自定义模块是否重写了库存调度相关方法,若有需适配Odoo14的API规范

方案3:添加异常捕获避免崩溃

修改定时任务的执行代码,添加异常捕获,防止单个任务失败导致服务器重启:

  1. 进入定时任务对应的服务器动作配置页面
  2. 将原代码:
    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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 19:37:03