如何在PyCharm中启用远程芹菜调试?

时间:2015-03-28 01:57:30

标签: debugging celery pycharm

我正试图找到一些关于如何在远程机器上的芹菜进程中启用PyCharm调试的说明。远程计算机正在运行Ubuntu 14.04。

我正在运行PyCharm 4.x。

我已经看到一些其他信息暗示其他信息有效,但无法找到任何正确的说明。

8 个答案:

答案 0 :(得分:27)

您可以Run Configuration运行celery工作人员,然后只需点击debug按钮即可进行调试。以下是我在PyCharm 5中设置的方法:

pycharm celery

您需要设置一个远程python解释器,然后设置其他配置,如上图所示。请注意,Working directory指向安装了bin的远程解释器的celery文件夹。

答案 1 :(得分:7)

只需添加以下配置:

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

这样做会使celery在与当前正在执行的线程相同的线程中执行。

答案 2 :(得分:6)

不幸的是,大多数解决方案都不适用于Windows。 (有一个separate question具体说明了这一点,但遗憾的是它已被关闭作为这个副本的重复。所以我现在在这里回答这个问题。)

问题是在Windows上,独立的celery命令是批处理文件,因此PyCharm无法将Python调试器附加到它。

在Celery 3.x之前,您可以创建manage.py运行配置并在其上调用celery worker命令。

Screenshot of PyCharm run configuration for running manage.py celery worker

请注意,您不需要在此处设置--app,因为应用程序是由管理命令通过DJANGO_SETTINGS_MODULE定义的。

不幸的是,celery管理命令是django-celery库的一项功能,Celery 4.x不支持该功能。到目前为止,我还没有找到Celery 4.x的解决方案。

答案 3 :(得分:6)

对于 Windows ,已在Celery> = 4.0上进行了测试

添加类型为“ Python ”的新(运行/调试)配置:

然后,在“配置”选项卡下: 将第一个选项(要运行的目标)从“ 脚本路径 ”切换到“ 模块名称 ”并填写值:

celery.bin.celery

像下面的快照一样:

enter image description here

答案 4 :(得分:1)

如果您将Gevent用于Celery,请不要忘记选中Preferences > Build, Execution, Deployment > Python Debugger > Gevent Compatible复选框。

答案 5 :(得分:0)

我的工作配置:

  • 脚本:/home/app/env/bin/celery
  • 脚本参数:worker -B -n qrc -Q qrc -l info --app=backend.celery

    • 其中-B用于芹菜, -n是节点名称, -Q是队列名称, -l是日志级别,并且 --app是应用名称,在我的情况下是settings.py旁边的celery.py的django应用。
  • 工作目录:/home/app/server/即我的django根文件夹

答案 6 :(得分:0)

我正在使用PyCharm 2017并且必须做一些与上面的答案非常相似的事情,但我特别要在“脚本”字段中将完整/绝对路径名称放到celery

另外,我不确定PyCharm 4是否具有此功能,但是较新的版本允许您通过转到Run>直接附加到正在运行的python进程;附加到本地流程......

这允许你运行芹菜,不管你以前(在终端中),然后允许Pycharm接管

答案 7 :(得分:0)

在Windows中,在Pycharm的调试conf中添加以下参数

-A YouAppName worker  --loglevel=debug -P solo --without-gossip --without-mingle --without-heartbeat