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

问题描述 投票:0回答:11

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

我正在运行 PyCharm 4.x。

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

debugging celery pycharm
11个回答
47
投票

您可以使用

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

您需要设置一个远程Python解释器,然后设置其他配置,如上图所示。请注意,

Working directory
指向安装了
bin
的远程解释器的
celery
文件夹。


25
投票

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

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

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

celery.bin.celery

就像下面的快照:


14
投票

只需添加以下配置:

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

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


9
投票

不幸的是,大多数解决方案不适用于 Windows。 (有一个专门针对此问题的单独问题,但不幸的是,它作为该问题的重复项而被关闭。所以我现在在这里回答这个问题。)

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

直到 Celery 3.x,您都可以创建

manage.py
运行配置并对其调用
celery worker
命令。

请注意,您不需要在此处设置

--app
,因为应用程序是由管理命令通过
DJANGO_SETTINGS_MODULE
定义的。

不幸的是,

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


3
投票

Figure: Run/Debug Configurations

我有PyCharm 2021.3(专业版)和我的库:

  • Python==3.8.9
  • 芹菜==5.2.7

我使用 macOS M1。我按照以下步骤解决了这个问题:

  1. 选项
    Edit Configurations..
    中有
    Run
  2. 单击显示蓝色箭头的
    '+'
    按钮并添加新配置。
  3. 添加Python配置。
  4. 选择配置
    Module name
    而不是
    Script Path
    ,如
    Figure
    中的红色箭头所示。
  5. 添加
    Parameters
    ,如
    --workdir=/path/to/your_proj_direction -A your_proj.dir.celery_app worker -l info
    。 celery 句柄路径需要
    --workdir
    参数。除此之外,您编写任何脚本来启动 celery Worker,开头不带
    celery
    单词。
  6. 添加
    Python interpreter
    作为您的项目解释器。
  7. Working directory
    添加到安装了 celery 库的虚拟环境路径中。
  8. 单击
    Apply
  9. 您可以使用正常的 Debug PyCharm 此配置。如果您以调试方式运行配置,PyCharm 将启动 celery Worker 并且您可以进行调试。

2
投票

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

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

2
投票

如果您使用 Gevent for Celery,请不要忘记选中

Preferences > Build, Execution, Deployment > Python Debugger > Gevent Compatible
复选框。


2
投票

添加到@Assam答案:

在 linux\ubuntu 上只需选择“脚本路径 -> 模块名称” =

celery
就帮我解决了问题


1
投票

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

celery

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

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


1
投票

使用

venv
时 mac 上的 celery 配置设置示例。

其中parametr

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

app = Celery('project')


0
投票

我的工作配置:

  • 脚本:
    /home/app/env/bin/celery
  • 脚本参数:

    worker -B -n qrc -Q qrc -l info --app=backend.celery

    • 其中
      -B
      代表芹菜甜菜,
      -n
      是节点名称,
      -Q
      是队列名称,
      -l
      是日志级别,并且
      --app
      是应用程序名称,在我的例子中,是一个 Django 应用程序,其 celery.py 位于 settings.py 旁边。
  • 工作目录:

    /home/app/server/
    即我的django根文件夹

© www.soinside.com 2019 - 2024. All rights reserved.