python - Celery 任务不在 PyCharm 调试器中运行

标签 python pydev celery django-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 --文件管理.py celeryd -E -B --loglevel=INFO

当我简单地运行进程而不在 PyCharm 中附加调试器时,导入错误消息永远不会显示,并且我的任务确实完成。

最后,我知道在我的路径中找到了 pydevd,因为我可以在代码中手动输入以下内容:

from pydev import pydevd
pydevd.settrace('my_host', port=5643, stdoutToServer=True, stderrToServer=True)

调试器将成功连接。然而问题是,这远不如在 PyCharm 中设置一些断点并单击“调试”方便。

最佳答案

为了调试 celery,我发现添加以下配置更简单:

from celery import current_app
current_app.conf.CELERY_ALWAYS_EAGER = True
current_app.conf.CELERY_EAGER_PROPAGATES_EXCEPTIONS = True

这使得 celery 在与当前执行线程相同的线程中运行。

关于python - Celery 任务不在 PyCharm 调试器中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15596912/

相关文章:

Django:如何在生产模式下访问 celery 花页面?

python - pydev 与 unicode 的奇怪行为

python - 在 Eclipse 中刷新 PyDev 导入路径

django - 停止 celeryd 的问题

SublimeREPL 上的 Python 交互模式

python - Eclipse 和 Pydev - 如何编辑语法着色选项

python - celery 内存管理

python - 根据每个子数组的累积和对 NXM Numpy 数组进行排序

python - setup.py 声称我的模块已安装,但事实并非如此

python - 为什么这个python会重新匹配?