我正在寻找如何在远程机器上的celery进程中启用PyCharm调试的指示。 远程计算机运行Ubuntu 14.04。
我正在运行PyCharm 4.x。
我看到其他一些信息暗示其他人已经使其工作,但是没有找到任何正确的说明。
只需添加以下配置:
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
命令。
请注意,您不需要在此处设置--app
,因为应用程序由管理命令通过DJANGO_SETTINGS_MODULE
定义。
不幸的是,celery
管理命令是django-celery
库的一个特性,该库不受Celery 4.x支持。迄今为止,我还没有找到Celery 4.x的解决方案。
我有PyCharm 2021.3(专业版)和我的库:
我使用的是macOS M1。我按照以下步骤解决了这个问题:
Run
中有 Edit Configurations..
。'+'
按钮,添加新配置。Module name
而不是 Script Path
,如 Figure
中所示的红色箭头。--workdir=/path/to/your_proj_direction -A your_proj.dir.celery_app worker -l info
。它需要 --workdir
参数来处理celery路径。除此之外,您可以编写任何脚本来启动celery worker,而无需在开头加上 celery
一词。Python interpreter
添加为您的项目解释器。Working directory
添加到安装了celery库的虚拟环境路径中。Apply
。-A YouAppName worker --loglevel=debug -P solo --without-gossip --without-mingle --without-heartbeat
celery
的完整/绝对路径名称。
celery
可执行文件的完整路径。 - Code-Apprentice