我跟着芹菜(Django)的第一步,并试图在后台运行一个繁重的过程。我安装了RabbitMQ服务器。但是,当我尝试时,
celery -A my_app worker -l info
它会抛出以下错误
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "c:\anaconda3\lib\site-packages\celery\concurrency\prefork.py", line
18, in <module>
from celery.concurrency.base import BasePool
File "c:\anaconda3\lib\site-packages\celery\concurrency\base.py", line 15,
in <module>
from celery.utils import timer2
File "c:\anaconda3\lib\site-packages\celery\utils\timer2.py", line 16, in
<module>
from kombu.asynchronous.timer import Entry
ModuleNotFoundError: No module named 'kombu.asynchronous.timer'
我经常搜索,但似乎无法让它发挥作用。任何帮助将受到高度赞赏。谢谢!
答案 0 :(得分:3)
TL; DR:从virtualenv的根目录中移除kombu目录(如果存在)。它可能只在Windows上失败。
这似乎是一个怪癖。我发现了同样的错误,我检查了发生了什么。
pip下载的wheel包看起来很好(kombu.asynchronous.timer存在于其中)。最新版本(目前为4.2.0)的发布也没问题。奇怪的是我在virtualenv装置中找到的东西。
我在virtualenv根目录下找到了一个kombu目录,该目录包含了库的内容,但它还有一个“异步”目录和一个“异步”目录。这些目录不是4.2.0版本,因为async具有timer.py文件但异步不具有。
从哪里来?它似乎来自车轮的数据目录。
所以,解决方案:我从virtualenv的根目录中移除了kombu目录,并且芹菜工作了。
答案 1 :(得分:2)
在阅读celery 4.4 documentation并尝试安装django-celery
之后,我降落了这里,这个软件包将芹菜版本强制为3.1.26.post2
,所以我必须:
pip uninstall django-celery
pip uninstall celery && pip install celery # Uninstall 3.1 and install latest
文档明确指出:
现在即可立即使用Django,因此本文档仅包含集成Celery和Django的基本方法。您将使用与非Django用户相同的API,因此建议您先阅读First Steps with Celery教程,然后再返回本教程。
答案 2 :(得分:1)
我遇到了同样的问题,但在重新安装版本为3.1.25的芹菜时解决了这个问题
pip uninstall celery && pip install celery==3.1.25
没有正式支持Windows
答案 3 :(得分:0)
我在你拥有的同一个python版本上测试了芹菜,这没关系。并且https://github.com/celery/kombu/blob/master/kombu/asynchronous/timer.py表明随机重命名事物不会对你有所帮助。也许您应该尝试pip uninstall kombu && pip --no-cache-dir install -U kombu
为kombu
执行全新安装。我想你的安装一定有问题。所以如果kombu
重新安装的东西不起作用,请尝试重新安装整个东西。
答案 4 :(得分:0)
我刚刚开始使用Celery。 我按照说明安装了Celery v 4.2.0
当我尝试运行命令时:
celery -A mysite worker -l info
我收到了错误:
ModuleNotFoundError: No module named 'kombu.asynchronous.timer
我删除了Celery安装:pip uninstall celery
之后安装Celery 3.1.25作为'chuhy'推荐
但是......还有其他一些问题,所以我立即卸载了3.1.25,并重新安装了celery v4.2.0。
在这种情况下,错误没有再次出现。
答案 5 :(得分:0)
我在Windows上工作,所以对此有些问题。 但是我的解决方案是用python 3.6.8创建新的conda env(据我所知,celery可能在python 3.7上工作,但有很多问题)。 然后继续安装最新版本的celery(4.3.0)和Django(2.2.3),然后一切正常。
答案 6 :(得分:0)
我在pip(3.1.26Post2)中的默认Celery安装中遇到了这个问题。如上所述,我安装了3.1.25版,但Celery仍然无法正常工作。因此,我明确安装了最新版本:
pip install Celery == 4.3
现在一切正常!
答案 7 :(得分:0)
我遇到过类似类型的问题,这是由于芹菜的版本较旧。卸载celery(pip卸载celery),然后再次安装(pip install Celery == 4.3),然后kaboom即可工作。