2012-10-08 9 views
6

Ich bin mit dem folgenden Problem mit meinem Python/Sellerie-Projekt in Eclipse/PyDev konfrontiert. Ich habe meine Aufgabe Funktion in myapp.tasks Modul wie folgt definiert:PyDev erkennt Sellerie Task Decorators nicht

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

Dann habe ich in einem anderen Modul wünschen, ein Wiederholungssignal an die Aufgabe zu senden, die die Funktion ruft. Also, ich tun, wie folgt:

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

von irgendeinem Grund PyDev die letzte Zeile mit einem Fehler markiert den Worten: ‚Nicht definierte Variable aus Import: Wiederholungs‘ Aber der Code tatsächlich funktioniert. Ist das ein PyDev-Problem, das Dekoratoren nicht erkennt oder mache ich hier etwas falsch?

+0

Haben Sie Sellerie installiert, nachdem Sie Ihr Pydev-Projekt (genauer gesagt, Ihre Python-Interpreter) eingerichtet haben? – RickyA

+1

Gleiches Problem hier mit ".delay()". Hast du eine Lösung? –

Antwort

0

Pydev verwendet anscheinend statische Analyse, die für eine dynamische Sprache ziemlich seltsam ist. Aber ich habe jetzt einen Hack hinzugefügt, der es PyDev erlauben sollte, das Sellerie-Modul erfolgreich statisch zu analysieren. Sie können es ausprobieren, indem Sie den 3.0-Zweig installieren:

+5

Ich laufe Sellerie 3.0.12 und ich bekomme immer noch diesen Fehler in Pydev –

0

PyDev verwendet statische Analyse. Sie können ein "Forced Builtin" hinzufügen, um den Fehlermarker aufzulösen.

  1. zu Fenster gehen -> Einstellungen
  2. Wählen PyDev -> Dolmetscher -> Python Interpreter im linken Bereich
  3. Wählen Sie den Python-Interpreter Sie im rechten Fensterbereich für Sellerie mit sind
  4. Bei der Boden, „Forced Bultins“ auswählen und klicken Sie auf „Neu ...“
  5. hinzufügen myapp.tasks.mytask oder andere Arten erforderlich

In meinem Fall musste ich aufgeben d "sellery.decorators", um einen ähnlichen Fehler zu beheben. Ich benutze Eclipse Neon (4.6.3), aber das Interface hat sich sehr wenig verändert. Ich habe diese Technik verwendet, um Fehler in Protokollpuffern für mehrere Jahre zu beheben.