2013-03-24 55 views
1

我使用PyCharm,當我一個調試器附加到芹菜工作進程,我的任務沒有完成已經注意到這個錯誤被記錄到控制檯:芹菜任務不PyCharm調試器中運行

Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
ImportError: No module named pydevd 

此消息記錄,以及當芹菜任務調用:

[2013-03-24 05:24:26,336: INFO/MainProcess] Got task from broker: celery.group[91218981-204a-414c-a674-fcd8e2b22d23]

然而,這個任務也永遠不會實際完成。

這是用來在PyCharm的pydevd調試器附加到我的芹菜工作進程的實際命令:

/home/scottc/venv/myproj/bin/python home/scottc/.IntelliJIdea12/config/plugins/python/helpers/pydev/pydevd.py --multiproc --client 127.0.0.1 --port 60283 --file manage.py celeryd -E -B --loglevel=INFO

當我簡單地運行不附加在PyCharm調試過程中,導入錯誤消息從不顯示,我的任務完成。

最後,我知道pydevd在我的路上發現,因爲我可以在下面給我的代碼手動輸入:

from pydev import pydevd 
pydevd.settrace('my_host', port=5643, stdoutToServer=True, stderrToServer=True) 

和調試器將成功連接。然而問題是,這比在PyCharm中設置一些斷點並點擊'debug'要方便得多。

+1

嘗試在[官方錯誤跟蹤器](http://youtrack.jetbrains.com/issues/PY)上提出問題。 – 2013-03-24 10:00:54

+0

我不認爲你已經與芹菜(而不是django芹菜)這個工作?我會買啤酒的指示。 – Ryan 2015-03-28 02:02:44

+0

我認爲一旦我使用了最新版本,似乎所有工作都很好。另外,Celery已經離開了django-celery(除非你想使用django db來存儲任務,否則不再需要它了)。 – 2015-03-28 18:06:22

回答

1

這個問題就走了,當我升級芹菜和檯球:

billiard==2.7.3.23 
celery==3.0.17 
1

出於調試芹菜,我覺得很簡單,添加以下配置:

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

這使得芹菜運行在同一線程作爲當前正在執行的線程。