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

Docker部署Django+Celery出现Logger无warn属性的AttributeError问题求助

问题:Celery Worker启动时出现AttributeError: 'Logger' object has no attribute 'warn'

启动Celery Worker容器时触发以下错误:

File "/usr/local/lib/python3.13/site-packages/kombu/transport/redis.py", line 92, in <module>
 crit, warn = logger.critical, logger.warn
                               ^^^^^^^^^^^
AttributeError: 'Logger' object has no attribute 'warn'

相关配置

requirements.txt文件

Django==4.2.7
psycopg==3.1.13
celery[redis]==5.3.6
django-celery-beat==2.5.0
redis==5.0.1

Dockerfile

FROM python:3.13.0a1-alpine3.18

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

COPY requirements /temp/requirements
RUN apk add postgresql-client build-base postgresql-dev
RUN pip install -r /temp/requirements/local.txt

WORKDIR /myproject

COPY . .

EXPOSE 8000

docker-compose.yml

redis:
    image: redis:7.2.3-alpine3.18
    ports:
      - '6379:6379'
    restart: always

  worker:
    build:
      context: .
    command: >
      sh -c "celery -A config worker -l INFO"
    restart: always
    depends_on:
      - redis

项目结构

项目结构截图

src文件夹包含项目应用。


问题原因

Python 3.13 alpha版本中,标准库logging模块的logger.warn方法被正式移除(该方法早已被标记为废弃,官方推荐使用logger.warning),而当前使用的Celery 5.3.6依赖的kombu版本未适配这一变更,导致代码调用不存在的logger.warn属性触发错误。

解决方案

方案1:降级Python版本(推荐)

Python 3.13处于alpha测试阶段,第三方库生态支持不完善,建议降级到稳定版Python 3.12:
修改Dockerfile中的基础镜像:

FROM python:3.12-alpine3.18

重新构建镜像并启动容器即可。

方案2:升级kombu到兼容版本

kombu后续版本已修复该问题,可在requirements.txt中指定兼容的kombu版本,比如添加:

kombu>=5.3.7

然后重新安装依赖、构建镜像并启动容器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 05:20:12