Celery 5.3.4在Debian11容器启动beat报backports模块缺失错误
Celery 5.3.4启动Beat时提示backports模块缺失
环境详情
- 主机系统:Debian 11
- 容器内Python版本:3.10.13-bullseye
- Celery版本:5.3.4
- Docker部署环境:Debian 11 主机、Windows10(Docker Desktop)
容器内pip与Python版本验证
root@5b45db7349aa:/app# pip3 --version pip 23.3.1 from /usr/local/lib/python3.10/site-packages/pip (python 3.10) root@5b45db7349aa:/app# python --version Python 3.10.13
错误信息
执行命令 celery -A app beat -l INFO 时触发如下错误:
root@5b45db7349aa:/app# celery -A app beat -l info celery beat v5.3.4 (emerald-rush) is starting. __ - ... __ - _ LocalTime -> 2023-11-03 10:48:13 Configuration -> . broker -> redis://redis:6379/0 . loader -> celery.loaders.app.AppLoader . scheduler -> celery.beat.PersistentScheduler . db -> celerybeat-schedule . logfile -> [stderr]@%DEBUG . maxinterval -> 5.00 minutes (300s) [2023-11-03 10:48:13,939: DEBUG/MainProcess] Setting default socket timeout to 30 [2023-11-03 10:48:13,940: INFO/MainProcess] beat: Starting... [2023-11-03 10:48:13,945: CRITICAL/MainProcess] beat raised exception <class 'ModuleNotFoundError'>: ModuleNotFoundError("No module named 'backports'") Traceback (most recent call last): File "/usr/local/lib/python3.10/shelve.py", line 111, in __getitem__ value = self.cache[key] KeyError: 'entries' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/local/lib/python3.10/site-packages/celery/apps/beat.py", line 113, in start_scheduler service.start() File "/usr/local/lib/python3.10/site-packages/celery/beat.py", line 634, in start humanize_seconds(self.scheduler.max_interval)) File "/usr/local/lib/python3.10/site-packages/kombu/utils/objects.py", line 31, in __get__ return super().__get__(instance, owner) File "/usr/local/lib/python3.10/functools.py", line 981, in __get__ val = self.func(instance) File "/usr/local/lib/python3.10/site-packages/celery/beat.py", line 677, in scheduler return self.get_scheduler() File "/usr/local/lib/python3.10/site-packages/celery/beat.py", line 668, in get_scheduler return symbol_by_name(self.scheduler_cls, aliases=aliases)( File "/usr/local/lib/python3.10/site-packages/celery/beat.py", line 513, in __init__ super().__init__(*args, **kwargs) File "/usr/local/lib/python3.10/site-packages/celery/beat.py", line 264, in __init__ self.setup_schedule() File "/usr/local/lib/python3.10/site-packages/celery/beat.py", line 541, in setup_schedule self._create_schedule() File "/usr/local/lib/python3.10/site-packages/celery/beat.py", line 570, in _create_schedule self._store['entries'] File "/usr/local/lib/python3.10/shelve.py", line 114, in __getitem__ value = Unpickler(f).load() ModuleNotFoundError: No module named 'backports'
补充信息
- 同一容器在Windows10的Docker Desktop环境下运行无异常
- 已确认Debian 11主机上的容器内pip、Python、Celery版本与Windows环境完全一致
Dockerfile内容
FROM python:3.10.13-slim-bullseye # 让Python直接输出到控制台,不做消息缓冲 ENV PYTHONUNBUFFERED 1 # 由Docker Compose传入,开发环境下设为true ARG DEV=false # 创建环境并升级pip RUN apt-get update RUN apt-get install -y gcc python3-dev build-essential curl nano RUN apt-get install -y postgresql-client libjpeg-dev libpq-dev # 下载微软SQL Server驱动相关包 RUN curl https://packages.microsoft.com/keys/microsoft.asc | tee /etc/apt/trusted.gpg.d/microsoft.asc RUN curl https://packages.microsoft.com/config/debian/11/prod.list | tee /etc/apt/sources.list.d/mssql-release.list RUN apt-get update RUN ACCEPT_EULA=Y apt-get install -y msodbcsql17 # 可选:安装unixODBC开发头文件 RUN apt-get install -y unixodbc-dev # 可选:为debian-slim安装kerberos库 RUN apt-get install -y libgssapi-krb5-2 RUN mv /etc/localtime /etc/localtime.old RUN ln -s /usr/share/zoneinfo/Europe/Rome /etc/localtime # 本地化设置(已注释) #RUN echo "it_IT.UTF-8 UTF-8" >> /etc/locale.gen #RUN locale-gen COPY ./requirements.txt /tmp/requirements.txt COPY ./requirements.dev.txt /tmp/requirements.dev.txt RUN pip install --no-cache-dir -r /tmp/requirements.txt COPY ./compose/celery/celery_worker_start.sh /celery_worker_start.sh RUN sed -i 's/\r$//g' /celery_worker_start.sh RUN chmod +x /celery_worker_start.sh COPY ./compose/celery/celery_beat_start.sh /celery_beat_start.sh RUN sed -i 's/\r$//g' /celery_beat_start.sh RUN chmod +x /celery_beat_start.sh COPY ./compose/celery/celery_flower_start.sh /celery_flower_start.sh RUN sed -i 's/\r$//g' /celery_flower_start.sh RUN chmod +x /celery_flower_start.sh RUN mkdir /app WORKDIR /app EXPOSE 8000 # 以django用户身份运行容器(未启用) #CMD ["run.sh"]
系统内核信息
容器内
Linux 3865cf0f97ec 4.19.0-25-amd64 #1 SMP Debian 4.19.289-2 (2023-08-08) x86_64 GNU/Linux
主机
Linux VSRVDEB01 4.19.0-25-amd64 #1 SMP Debian 4.19.289-2 (2023-08-08) x86_64 GNU/Linux
内容的提问来源于stack exchange,提问作者ssgakhal
相关产品推荐
相关产品推荐

