在PyCharm里调试Celery任务,关键是要让worker在调试模式下运行。我常用的方法是通过PyCharm的调试配置来启动worker。
首先,创建一个调试配置:
- 点击“Run” -> “Edit Configurations”
- 添加新的Python配置
- 在“Script path”里填上celery的执行路径,通常是
-m celery
- 在“Parameters”里填上
worker --app=your_app_module --loglevel=info
这样配置后,你可以在任务代码里设置断点,然后启动这个调试配置。worker就会在调试器控制下运行,当任务被执行时,断点就会生效。
如果你用的是Windows系统,可能需要加上--pool=solo参数,因为Celery的默认进程池在Windows上调试可能有问题。
另一个方法是直接在你的代码里启动worker,这样更容易控制:
if __name__ == '__main__':
from celery import current_app
current_app.start(argv=['worker', '--loglevel=info'])
然后在PyCharm里直接调试这个脚本文件。
调试远程任务的话,可以在任务代码里加上pydevd的调用,但这样需要先启动PyCharm的远程调试服务器。
总结:配置调试启动worker最直接。