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配置文件中定义
方式2:在Django settings中定义(Celery会自动识别result_backend_transport_options = { 'table_names': { 'task': 'python38_taskmeta', 'group': 'python38_groupmeta' } }CELERY_前缀的配置)CELERY_RESULT_BACKEND_TRANSPORT_OPTIONS = { 'table_names': { 'task': 'python38_taskmeta', 'group': 'python38_groupmeta' } } - 配置生效后执行命令生成新表结构,避免手动建表字段不匹配:
celery upgrade results <你的结果后端连接地址> - 重启所有Celery worker、beat进程即可生效。
内容的提问来源于stack exchange,提问作者pm2613
相关产品推荐
相关产品推荐

