web-dev-qa-db-ja.com

PyCharmでセロリのリモートデバッグを有効にするにはどうすればよいですか?

リモートマシンのセロリプロセス内でPyCharmデバッグを有効にする方法に関するいくつかの指示を見つけようとしています。リモートマシンはUbuntu 14.04を実行しています。

PyCharm 4.xを実行しています。

他の人が機能しているとほのめかす他のいくつかの情報を見ましたが、適切な指示を見つけることができませんでした。

25
Ryan

Run Configurationを使用してceleryワーカーを実行すると、debugボタンをクリックするだけでデバッグできます。 PyCharm 5で設定する方法は次のとおりです。

pycharm celery

リモートpython=インタプリタを設定してから、上記の画像のように他の構成を設定する必要があります。Working directoryは、binがインストールされているリモートインタープリターのceleryフォルダーを指しています。

30
norbertpy

次の設定を追加するだけです:

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

これにより、セロリは現在実行中のスレッドと同じスレッドで実行されます。

8
Varun Achar

残念ながら、ほとんどのソリューションはWindowsでは機能しません。 (具体的には 別の質問 がありましたが、残念ながらこの質問の複製としてクローズされました。ここでその質問に回答します。)

問題は、Windowsでは、スタンドアロンのセロリコマンドがバッチファイルであるため、PyCharmがPythonデバッガーをアタッチできないことです。

Celery 3.xまでは、manage.py実行構成を作成してcelery workerコマンドを呼び出すことができました。

Screenshot of PyCharm run configuration for running manage.py celery worker

アプリケーションは--appを介して管理コマンドによって定義されるため、ここでDjango_SETTINGS_MODULEを設定する必要がないことに注意してください。

残念ながら、celery管理コマンドはDjango-celeryライブラリの機能であり、Celery 4.xではサポートされていません。現時点では、Celery 4.xのソリューションが見つかりません。

6

windowsでは、Pycharmのデバッグ設定に次のパラメータを追加します

-A YouAppName worker  --loglevel=debug -P solo --without-gossip --without-mingle --without-heartbeat
0
Rahsoon

私はPyCharm 2017を使用していて、上記の答えと非常によく似たことをしなければなりませんでしたが、「スクリプト」フィールドにceleryへの完全/絶対パス名を具体的に入力する必要がありました

また、PyCharm 4にこの機能があるかどうかはわかりませんが、新しいバージョンでは、実行中のpythonプロセスに直接実行できます。実行>ローカルプロセスにアタッチ...

これにより、以前は(おそらくターミナルで)セロリを実行できますが、その後Pycharmが引き継ぐことができます

0
s g

私の作業構成:

  • 脚本: /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

0
MarZab