Celery任务在PyCharm调试器中不运行
我在使用PyCharm的时候,发现当我把调试器连接到celery工作进程时,我的任务就无法完成,并且控制台会记录下这个错误:
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named pydevd
当调用celery任务时,也会记录下这个信息:
[2013-03-24 05:24:26,336: INFO/MainProcess] 从代理获取任务: celery.group[91218981-204a-414c-a674-fcd8e2b22d23]
不过,这个任务实际上从来没有完成过。
这是我在PyCharm中把pydevd调试器连接到celery工作进程时使用的命令:
/home/scottc/venv/myproj/bin/python home/scottc/.IntelliJIdea12/config/plugins/python/helpers/pydev/pydevd.py --multiproc --client 127.0.0.1 --port 60283 --file manage.py celeryd -E -B --loglevel=INFO
当我直接运行这个进程,而不在PyCharm中连接调试器时,ImportError的消息就不会出现,我的任务也能顺利完成。
最后,我知道pydevd在我的路径中,因为我可以手动在代码中输入以下内容:
from pydev import pydevd
pydevd.settrace('my_host', port=5643, stdoutToServer=True, stderrToServer=True)
这样调试器就能成功连接。不过,这样做比在PyCharm中设置断点并点击“调试”要麻烦得多。
2 个回答
4
为了调试celery,我发现添加以下配置会更简单:
from celery import current_app
current_app.conf.CELERY_ALWAYS_EAGER = True
current_app.conf.CELERY_EAGER_PROPAGATES_EXCEPTIONS = True
这样做会让celery在当前正在执行的线程中运行。
1
这个问题在我升级了celery和billiards之后就解决了。
billiard==2.7.3.23
celery==3.0.17