繁体   English   中英

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

[英]How do I enable remote celery debugging in PyCharm?

我正在尝试查找有关如何在远程机器上的 celery 进程中启用 PyCharm 调试的说明。 远程机器正在运行 Ubuntu 14.04。

我正在运行 PyCharm 4.x。

我已经看到一些其他信息暗示其他人可以使用它,但无法找到任何正确的说明。

你可以有一个Run Configuration来运行你的celery工人,然后你只需点击debug按钮就可以进行调试。 这是我在 PyCharm 5 中设置的方法:

芹菜

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

对于Windows ,使用 Celery >= 4.0 进行测试

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

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

celery.bin.celery

像下面的快照:

在此处输入图片说明

只需添加以下配置:

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

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

不幸的是,大多数解决方案在 Windows 上不起作用。 (有一个专门关于此的单独问题,但不幸的是它作为这个问题的副本而关闭。所以我现在将在这里回答这个问题。)

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

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

用于运行 manage.py celery worker 的 PyCharm 运行配置的屏幕截图

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

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

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

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

这允许您以之前的方式运行 celery(可能在终端中)然后允许 Pycharm 接管

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

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

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

我的工作配置:

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

    • 其中-B用于 celerybeet, -n是节点名称, -Q是队列名称, -l是日志级别,-- --app是应用程序名称,在我的例子中,一个 celery.py 与 settings.py 相邻的 Django 应用程序。
  • 工作目录: /home/app/server/即我的 django 根文件夹

使用venv时 mac 上 celery 的配置设置venv

其中 parametr app是 Python 代码中Celery对象的名称

app = Celery('project')

celery for mac 的配置设置

添加到@Assam答案:

在 linux\\ubuntu 上只需选择“脚本路径-> 模块名称”= celery为我做了诀窍

[1]:https://stackoverflow.com/users/149556/assem

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM