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

Django从Python2.7迁3.8蓝绿部署时Celery自定义结果表名不生效求助

Celery自定义结果存储表名配置不生效的解决方案

错误原因

你之前的配置存在核心逻辑错误:自定义表名的配置不是结果后端的配置值,不能直接赋值给result_backend参数,该配置属于数据库结果后端的附加传输选项。

正确配置步骤

  • 首先确认你使用的Celery版本为4.0及以上,该配置仅支持4.x及更高版本
  • 保留原有result_backend的正常配置,不要修改为表名字典,示例:
    # 直接在Celery配置中定义
    result_backend = 'db+mysql://user:password@127.0.0.1/celery_db'
    # 或从Django settings中读取对应配置
    result_backend = settings.CELERY_RESULT_BACKEND
    
  • 新增传输选项配置传入自定义表名:
    方式1:直接在Celery配置文件中定义
    result_backend_transport_options = {
        'table_names': {
            'task': 'python38_taskmeta',
            'group': 'python38_groupmeta'
        }
    }
    
    方式2:在Django settings中定义(Celery会自动识别CELERY_前缀的配置)
    CELERY_RESULT_BACKEND_TRANSPORT_OPTIONS = {
        'table_names': {
            'task': 'python38_taskmeta',
            'group': 'python38_groupmeta'
        }
    }
    
  • 配置生效后执行命令生成新表结构,避免手动建表字段不匹配:
    celery upgrade results <你的结果后端连接地址>
    
  • 重启所有Celery worker、beat进程即可生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 23:45:04