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?
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.
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:
Mehr in der Dokumentation .
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.
Tags und Links django celery importerror