リモートマシンのセロリプロセス内で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
これにより、セロリは現在実行中のスレッドと同じスレッドで実行されます。
残念ながら、ほとんどのソリューションはWindowsでは機能しません。 (具体的には 別の質問 がありましたが、残念ながらこの質問の複製としてクローズされました。ここでその質問に回答します。)
問題は、Windowsでは、スタンドアロンのセロリコマンドがバッチファイルであるため、PyCharmがPythonデバッガーをアタッチできないことです。
Celery 3.xまでは、manage.py
実行構成を作成してcelery worker
コマンドを呼び出すことができました。
アプリケーションは--app
を介して管理コマンドによって定義されるため、ここでDjango_SETTINGS_MODULE
を設定する必要がないことに注意してください。
残念ながら、celery
管理コマンドはDjango-celery
ライブラリの機能であり、Celery 4.xではサポートされていません。現時点では、Celery 4.xのソリューションが見つかりません。
windowsでは、Pycharmのデバッグ設定に次のパラメータを追加します
-A YouAppName worker --loglevel=debug -P solo --without-gossip --without-mingle --without-heartbeat
私はPyCharm 2017を使用していて、上記の答えと非常によく似たことをしなければなりませんでしたが、「スクリプト」フィールドにcelery
への完全/絶対パス名を具体的に入力する必要がありました
また、PyCharm 4にこの機能があるかどうかはわかりませんが、新しいバージョンでは、実行中のpythonプロセスに直接実行できます。実行>ローカルプロセスにアタッチ...
これにより、以前は(おそらくターミナルで)セロリを実行できますが、その後Pycharmが引き継ぐことができます
私の作業構成:
/home/app/env/bin/celery
スクリプトパラメータ:worker -B -n qrc -Q qrc -l info --app=backend.celery
-B
はセロリビート、-n
はノード名、-Q
はキュー名、-l
はログレベルであり、--app
はアプリ名です。私の場合、Django app with celery.pyがsettings.pyの横にあります。作業ディレクトリ:/home/app/server/
ie my Django root folder