我想在python中使用celery使用并发。 我有一个tasks.py文件,它是一个使用BeautifulSoup的网络爬虫。 我所做的进口是:
from celery import Celery
import eventlet
app = Celery('tasks', backend='amqp', broker='amqp://')
对于芹菜工人,我使用的是这个命令:
celery -A tasks worker --loglevel=info --pool=eventlet -c 1000
错误:
mayank@mayank-Studio-1558:~/cognite/test$ celery -A tasks worker --loglevel=info -- pool=eventlet -c 1000
Traceback (most recent call last):
File "/usr/local/bin/celery", line 11, in <module>
sys.exit(main())
File "/usr/local/lib/python2.7/dist-packages/celery/__main__.py", line 28, in main
maybe_patch_concurrency()
File "/usr/local/lib/python2.7/dist-packages/celery/__init__.py", line 124, in maybe_patch_concurrency
patcher()
File "/usr/local/lib/python2.7/dist-packages/celery/__init__.py", line 89, in _patch_eventlet
eventlet.monkey_patch()
AttributeError: 'module' object has no attribute 'monkey_patch'
我想使用1000个线程执行任务。 我尝试导入eventlet,然后执行:
eventlet.monkey_patch(socket=True, select=True)
eventlet.import_patched('monkey_patch')
仍然没有工作和相同的错误。
如果有人可以提供帮助,那就太好了。 感谢。
答案 0 :(得分:2)
由于eventlet安装,此错误即将发生。 以前我用过pip install eventlet, 但 sudo apt-get install eventlet 为我工作,解决了 monkey_patch 依赖关系。
答案 1 :(得分:1)
我刚遇到这个问题,对我来说,问题是我的系统中没有python开发头。当我试图通过pip安装eventlet时,我收到了这个错误:
In file included from greenlet.c:5:0:
greenlet.h:8:20: fatal error: Python.h: No such file or directory
#include <Python.h>
^
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
但是它说无论如何都安装了eventlet,除了我在尝试使用它时遇到了同样的错误。所以如何在我的情况下解决它是:
pip uninstall eventlet
apt-get install python-dev (For Ubuntu, use your distros package manager)
pip install eventlet
希望它有所帮助。
答案 2 :(得分:0)
最有可能的原因是您eventlet.py
中的某个位置eventlet.pyc
或sys.path
,可能在您的项目树中。
试试这个:
from __future__ import absolute_import
from celery import Celery
import eventlet
app = Celery('tasks', backend='amqp', broker='amqp://')