请问有大佬知道怎么用 pycharm 调试 celery 吗?

2018-05-30 12:31:03 +08:00
 darksand

我想调试 worker 里面的任务,找了好久还是没有找到办法。。有大佬知道么。。

7327 次点击
所在节点    Python
30 条回复
rogwan
2018-05-30 12:37:37 +08:00
和单独启动一个 App 没区别,直接在 pycharm 命令行中启动 celery 就可以
darksand
2018-05-30 12:44:53 +08:00
@rogwan 请问具体怎么启动呢。。大佬谢谢
darksand
2018-05-30 12:52:07 +08:00
@rogwan 我在 pycharm 中启动了 worker 但是怎么打断点调试呢。。
misaka19000
2018-05-30 12:52:43 +08:00
在右上角的 edit configurations 里面应该可以设置程序的启动方式吧,在里面设置好启动 celery 的命令然后使用 pycharm 来启动应用应该就可以了
darksand
2018-05-30 12:55:31 +08:00
@misaka19000 我尝试过你说的方法 但是在 [Script] 那个位置 我不知道怎么写,我找不到启动 worker 的脚本
qi1070445109
2018-05-30 12:57:48 +08:00
@darksand 你把命令写脚本里不就行了?😥
darksand
2018-05-30 12:59:19 +08:00
@qi1070445109 不行


Connected to pydev debugger (build 145.971)
Traceback (most recent call last):
File "C:\Program Files (x86)\JetBrains\PyCharm 2016.1.3\helpers\pydev\pydevd.py", line 1531, in <module>
globals = debugger.run(setup['file'], None, None, is_module)
File "C:\Program Files (x86)\JetBrains\PyCharm 2016.1.3\helpers\pydev\pydevd.py", line 938, in run
pydev_imports.execfile(file, globals, locals) # execute the script
IOError: [Errno 2] No such file or directory: 'celery -A ics.task.example.baidu_news_task worker -E -Q baidu_news_queue -n baidu_news.%h -l info'

Process finished with exit code 1
darksand
2018-05-30 12:59:47 +08:00
@qi1070445109 这个位置 必须是一个脚本吧。。
wcsjtu
2018-05-30 13:02:50 +08:00
celery 有多线程模式的,比多进程调试要方便很多
qi1070445109
2018-05-30 13:10:29 +08:00
@darksand 是这样,那个位置就是个 py 文件,然后你把用 os 来执行 celery 的启动命令。
darksand
2018-05-30 13:30:08 +08:00
@qi1070445109 我试了 不行啊 进不了断点
suber
2018-05-30 13:35:10 +08:00
你调试的时候,把并发方式设置为 solo
https://github.com/celery/celery/blob/master/celery/concurrency/solo.py
suber
2018-05-30 13:39:03 +08:00
@darksand #7,你这个报错,如果是在 Linux 下,用 celery 命令所在的全路径。如:`/usr/local/bin/celery`
darksand
2018-05-30 13:43:01 +08:00
@suber 我现在是在 windows 我找到了 celery.exe 那个地方我填写 E:\Python27\Scripts\celery.exe
但是还是不行
yongzhong
2018-05-30 13:43:07 +08:00
darksand
2018-05-30 13:44:34 +08:00
@suber
Connected to pydev debugger (build 145.971)
Traceback (most recent call last):
File "C:\Program Files (x86)\JetBrains\PyCharm 2016.1.3\helpers\pydev\pydevd.py", line 1531, in <module>
globals = debugger.run(setup['file'], None, None, is_module)
File "C:\Program Files (x86)\JetBrains\PyCharm 2016.1.3\helpers\pydev\pydevd.py", line 938, in run
pydev_imports.execfile(file, globals, locals) # execute the script
File "E:/Python27/Scripts/celery.exe", line 1
SyntaxError: Non-ASCII character '\x90' in file E:/Python27/Scripts/celery.exe on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

Process finished with exit code 1

这个错。。意思这个还必须是个脚本。。exe 不行
darksand
2018-05-30 13:45:40 +08:00
@yongzhong 兄弟 我的是 windows。。
suber
2018-05-30 13:46:03 +08:00
接#12,默认的多进程调试也是可以的。但是如果一次发多个任务,每个任务都要调试的话,需要在 pycharm 里面手动找到接收了任务的进程,然后切换并调试。
suber
2018-05-30 13:47:58 +08:00
@darksand 你 windows,应该是 exe 就可以了。你截图一下调试的配置
darksand
2018-05-30 13:48:50 +08:00
@suber 恩 明白,但是我现在不知道如何调试。。大佬能给仔细说说吗 谢谢!
我是 windows 没有 /usr/local/bin/celery 只有 E:\Python27\Scripts\celery.exe

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/458903

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX