我正试图找到一些关于如何在远程机器上的芹菜进程中启用PyCharm调试的说明。远程计算机正在运行Ubuntu 14.04。
我正在运行PyCharm 4.x。
我已经看到一些其他信息暗示其他信息有效,但无法找到任何正确的说明。
答案 0 :(得分:27)
您可以Run Configuration
运行celery
工作人员,然后只需点击debug
按钮即可进行调试。以下是我在PyCharm 5中设置的方法:
您需要设置一个远程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
命令。
请注意,您不需要在此处设置--app
,因为应用程序是由管理命令通过DJANGO_SETTINGS_MODULE
定义的。
不幸的是,celery
管理命令是django-celery
库的一项功能,Celery 4.x不支持该功能。到目前为止,我还没有找到Celery 4.x的解决方案。
答案 3 :(得分:6)
对于 Windows ,已在Celery> = 4.0上进行了测试
添加类型为“ Python ”的新(运行/调试)配置:
然后,在“配置”选项卡下: 将第一个选项(要运行的目标)从“ 脚本路径 ”切换到“ 模块名称 ”并填写值:
celery.bin.celery
像下面的快照一样:
答案 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