【问题标题】:Django project celery and django-filter causing errorsDjango 项目 celery 和 django-filter 导致错误
【发布时间】:2023-03-26 17:01:01
【问题描述】:

我有一个正在运行的 django 项目,但是在我将 django-filter 添加到我的需求文件后,我开始遇到 celery 错误。

我使用的是 python 3.7,这里是已安装包的列表和版本:

Django-3.0.7
amqp-2.6.0
asgiref-3.2.7
billiard-3.6.3.0
celery-4.4.4
certifi-2020.4.5.1
chardet-3.0.4
django-bootstrap3-12.1.0
django-celery-results-1.2.1
django-filter-2.2.0
djangorestframework-3.11.0
idna-2.9 importlib-metadata-1.6.0
kombu-4.6.10
ovirt-engine-sdk-python-4.4.3
psycopg2-2.8.5
pycurl-7.43.0.5
python-gitlab-2.2.0
pytz-2020.1
redis-3.5.3
requests-2.23.0
six-1.15.0
sqlparse-0.3.1
urllib3-1.25.9
vine-1.3.0
zipp-3.1.0

我决定删除我的使用过滤的代码,只留下 pip 安装包,我仍然看到相同的错误。下面是一个相关的sn-p,但如果需要,我可以添加整个跟踪。

celery-beat_1  | [2020-06-04 18:11:33,145: CRITICAL/MainProcess] beat raised exception <class 'ModuleNotFoundError'>: ModuleNotFoundError("No module named 'future'")
celery-beat_1  | Traceback (most recent call last):
celery-beat_1  |   File "/usr/local/lib/python3.7/site-packages/kombu/utils/objects.py", line 42, in __get__
celery-beat_1  |     return obj.__dict__[self.__name__]
celery-beat_1  | KeyError: 'scheduler'
celery-beat_1  | 
celery-beat_1  | During handling of the above exception, another exception occurred:
celery-beat_1  | 
celery-beat_1  | Traceback (most recent call last):
celery-beat_1  |   File "/usr/local/lib/python3.7/site-packages/kombu/utils/objects.py", line 42, in __get__
celery-beat_1  |     return obj.__dict__[self.__name__]
celery-beat_1  | KeyError: 'backend'
.
.
.
celery-beat_1  | [2020-06-04 18:11:33,161: WARNING/MainProcess] File "/usr/local/lib/python3.7/site-packages/celery/backends/base.py", line 10, in <module>
celery-beat_1  | [2020-06-04 18:11:33,161: WARNING/MainProcess] from future.utils import raise_with_traceback
celery-beat_1  | [2020-06-04 18:11:33,161: WARNING/MainProcess] ModuleNotFoundError
celery-beat_1  | [2020-06-04 18:11:33,161: WARNING/MainProcess] :
celery-beat_1  | [2020-06-04 18:11:33,161: WARNING/MainProcess] No module named 'future'

项目是使用docker compose构建的,设置celery/redis/db/webapp。

关于为什么 django-filter 会破坏一切的任何想法?

【问题讨论】:

  • 我认为它与 django-filter 无关。从错误消息中,您卸载了 future 包。
  • 我所做的唯一更改是将“django-filter”添加到要安装的软件包列表中。我没有卸载“未来”
  • 您正在升级 celery 并点击this bug
  • 感谢梅尔文!这是一个非常烦人的错误,并且不知道为什么添加额外的包会导致安装不同版本的 celery。手动将未来添加到修复它的要求中。如果您想发表评论作为答案,我会将其标记为已接受

标签: python django celery django-filter


【解决方案1】:

如果您使用 pipenv 或类似的包管理器之类的工具安装包,那么除非您告诉他们不要升级,否则它们会升级所有过时的包。

在这种情况下 celery 已升级到 4.4.4 并且您在 celery 中遇到了一个相当令人尴尬的错误(老实说...这是如何通过 CI 实现的?),但至少可以轻松修复未来的安装模块。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    • 2013-10-13
    • 2014-01-04
    • 2018-06-09
    • 1970-01-01
    • 2023-03-25
    • 2021-01-13
    相关资源
    最近更新 更多