2012-10-08 12 views
6

私はEclipse/PyDevのPython/Celeryプロジェクトで次の問題に直面しています。 私はこのようなmyapp.tasksモジュールで私の仕事関数を定義しました:PyDevはCeleryタスクデコレータを認識しません

@celery.task(max_retries=None) 
def mytask(parm1): 
    ... 
    myapp.myfunction(parm1) 
    ... 

その後、別のモジュールでは、私は、関数を呼び出しているタスクにリトライ信号を送りたいです。 「:再試行インポートから未定義の変数を」 しかし、コードが実際に動作するPyDevは言っエラーと最後の行をマークし、いくつかの理由により、

import myapp.tasks 
... 
def myfunction(parm1): 
    ... 
    raise myapp.tasks.mytask.retry(countdown=60) 

:だから、私はこのように行います。 これはデコレータを認識しないPyDevの問題ですか、私はここで何か間違っていますか?

+0

pydevプロジェクト(またはより正確には、あなたのPythonインタプリタ)をセットアップした後、セロリをインストールしましたか? – RickyA

+1

".delay()"と同じ問題が発生しました。あなたは修正を得ましたか? –

答えて

0

Pydevは明らかに静的解析を使用していますが、これは動的言語にとってはむしろ奇妙です。しかし、私は今、PyDevがセロリモジュールを静的に解析できるようにすべきハックを追加しました。 012ブランチをインストールすることで試してみることができます。

pip install https://github.com/celery/celery/zipball/3.0 
+5

私はセロリ3.0.12を実行していますが、私はまだpydevでこのエラーが発生します –

0

PyDevは静的解析を使用しています。 「Forced Builtin」を追加すると、エラーマーカーを解決できます。ウィンドウに

  1. 行く - >設定
  2. 選択PyDevは - >通訳 - > Pythonの通訳が左ペインに
  3. はあなたで右ペイン
  4. にセロリのために使用しているPythonインタプリタを選択底は、「強制Bultins」を選択してクリックし、「新規...」
  5. myapp.tasks.mytaskまたは任意の他のタイプを追加します。私の場合は

を必要と、私は広告に必要なd "celery.decorators"も同様のエラーを解決します。私はEclipse Neon(4.6.3)を使用していますが、インターフェースはほとんど変更されていません。私はこのテクニックを使って、数年間プロトコルバッファのエラーを解決しました。

関連する問題