Django-Importschleife zwischen Sellerie-Aufgaben und meinen Modellen

8

Ich verwende Sellerie mit meinem Django-Projekt.

In der Sellerie-Taskdatei muss ich meine Modelle importieren, um Modellmethoden auszulösen. Ich möchte aber auch, dass mein Modell bestimmte Sellerieaufgaben auslösen kann.

Im Moment importiere ich meine Modelle in Sellerie, aber der Versuch, Sellerie-Aufgaben in meine Modelldatei zu importieren, führt zu einer Importschleife und einem Importfehler.

Was ist der richtige Weg, um dies zu tun?

    
Ilan lewin 26.06.2013, 07:01
quelle

4 Antworten

8

Was ich am Ende gemacht habe, ist die Verwendung von Importen innerhalb von Methoden anstelle eines allgemeinen Imports am Anfang der Modelldatei. Offensichtlich brauchte ich keine kreisförmigen Importe. Mein Problem war, dass ich das Modell oben in der Sellerie-Aufgaben-Datei importierte und die Sellerie-Aufgaben oben in der Modelldatei importierte. Das war nicht wirklich notwendig. Durch die Abschottung der Importe konnte ich das zirkuläre Importproblem vermeiden.

    
Ilan lewin 08.07.2013, 20:55
quelle
2

Sellerie bietet die send_task() -Methode, die es ermöglicht, eine Aufgabe nach Namen zu senden, so dass sie nicht importiert werden muss - zum Beispiel:

%Vor%

Mehr in der Dokumentation .

    
rafalmp 21.07.2017 12:36
quelle
1

Der allgemeine Ansatz zur Lösung dieser scheinbaren Probleme mit zirkulärer Abhängigkeit besteht darin, den Code herauszufiltern, der sowohl von den Modellen als auch von den Aufgaben importiert werden kann. Zum Beispiel könnten Sie die von Ihnen erwähnten Modellmethoden ausklammern. Ihre Modelle würden diesen ausgewerteten Code importieren, genau wie die Aufgaben.

    
Charl Botha 26.06.2013 07:12
quelle
1

Wie wäre es, wenn Sie keine task.py-Datei verwenden und nur die Task-Decoratoren auf Methoden in models.py anwenden?

    
jaywhy13 16.01.2014 17:31
quelle

Tags und Links