我正在尝试通过 docker 将 celery 连接到我的 django 项目。 但是当启动工作容器时,我收到以下错误 -
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文件夹包含应用程序。
我试图解决这个问题,但失败了。 请告诉我问题可能是什么以及如何解决。 谢谢!
感谢[@erny][1]我能够解决这个问题。 [1]:https://stackoverflow.com/users/308351/erny
问题是在 python 3.13 中 logger.warn 被删除了。
因此,为了在编写答案时一切都能正常工作,请使用 3.13 及以下版本的 python(不包括在内)