无法启动Celery Worker(Kombu.asynchronous.timer)

时间:2018-05-24 14:29:28

标签: python python-3.x celery django-celery celery-task

我跟着芹菜(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'

我经常搜索,但似乎无法让它发挥作用。任何帮助将受到高度赞赏。谢谢!

8 个答案:

答案 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

也许是因为芹菜4 https://github.com/celery/celery/issues/3551

没有正式支持Windows

答案 3 :(得分:0)

我在你拥有的同一个python版本上测试了芹菜,这没关系。并且https://github.com/celery/kombu/blob/master/kombu/asynchronous/timer.py表明随机重命名事物不会对你有所帮助。也许您应该尝试pip uninstall kombu && pip --no-cache-dir install -U kombukombu执行全新安装。我想你的安装一定有问题。所以如果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即可工作。