django-celery

___ answer26411453 ___

Verwenden Sie Signale.

tasks.py

%Vor%

models.py

%Vor%     
___ qstntxt ___

Ich habe eine Django-App, die Sellerie verwendet, um einige Aufgaben zu entfernen. Hauptsächlich wird die Berechnung einiger Felder in einer Datenbanktabelle verschoben.

Also, ich habe eine task.py:

%Vor%

Und in models.py

%Vor%

Nun wird das natürlich nicht funktionieren wegen eines zirkulären Imports ( %code% imports %code% und %code% imports %code% ).

Ich habe das für den Moment gelöst, indem ich %code% von %code% aufgerufen habe, aber es scheint sinnvoll zu sein, die Modelllogik innerhalb der Modellklasse zu belassen. Gibt es einen besseren Weg, dies zu tun?

    
___ qstnhdr ___ Aufhebung der Kreisimporte in Sellerie und Django ___ tag123python ___ Python ist eine dynamische und stark typisierte Programmiersprache, die die Usability betont. Zwei ähnliche, aber größtenteils inkompatible Versionen von Python sind weit verbreitet (2 und 3). Wenn Sie eine versionsspezifische Python-Frage haben, sollten Sie die Tags [python-2.7] oder [python-3.x] zusätzlich zum Tag [python] verwenden. Wenn Sie eine Python-Variante wie jython, pypy, iron-python usw. verwenden, kennzeichnen Sie diese bitte entsprechend. ___ tag123cellery ___ Sellery ist ein verteiltes Aufgabenwarteschlangen-Framework für Python, das für die asynchrone und parallele Ausführung verwendet wird. ___ tag123django ___ Django ist ein serverseitiges Open-Source-Webanwendungs-Framework, das in Python geschrieben wurde. Es wurde entwickelt, um den Aufwand für die Erstellung komplexer datengesteuerter Websites und Webanwendungen zu reduzieren, mit besonderem Fokus auf weniger Code, keine Redundanz und expliziter als implizit. ___ answer30397422 ___

Die Lösung von joshua ist sehr gut, aber als ich es zum ersten Mal probiert habe, habe ich festgestellt, dass meine %code% Decorators keinen Effekt hatten. Das war, weil das Modul %code% nicht irgendwo importiert wurde, was erwartet wurde, da ich Automatische Erkennung der Aufgabe .

Es gibt jedoch eine andere Möglichkeit, %code% von %code% zu entkoppeln. Tasks können namentlich gesendet werden und müssen nicht in dem Prozess, der sie sendet, ausgewertet (importiert) werden:

%Vor%

%code% ist eine Methode für Sellery-App-Objekte.

Bei dieser Lösung ist es wichtig, auf korrekte Angaben zu achten , vorhersagbare Namen für Ihre Aufgaben.

    
___ answer43530409 ___

Um nur eine weitere nicht großartige Lösung in diese Liste zu packen, stütze ich mich auf django's jetzt eingebaute App-Registry .

Also in %code% , anstatt von Modellen zu importieren, verwenden Sie %code% , um Zugriff auf das Modell zu erhalten.

Ich mache das mit einer Hilfsmethode mit einer gesunden Dokumentation, nur um auszudrücken, warum das schmerzhaft ist:

%Vor%

Und dann:

%Vor%

Du könntest einfach %code% direkt verwenden.

    
___ tag123djangocellery ___ Django-Sellerie bietet Sellerie-Integration für Django. ___ tag123circularcompendency ___ circular Abhängigkeit ist eine Beziehung zwischen zwei oder mehr Modulen, die entweder direkt oder indirekt voneinander abhängig sind, um richtig zu funktionieren. ___ answer26382812 ___

In Ihren Modellen können Sie den %code% am Anfang der Datei importieren, bevor Sie ihn verwenden. Es löst das zirkuläre Importproblem.

%Vor%

Alternativ können Sie auch in Ihrem %code% dasselbe tun. Sie können Ihre Modelle unmittelbar vor der Verwendung importieren, anstatt sie zu beginnen.

Alternative:

Sie können die Methode %code% verwenden, um Ihre Aufgabe aufzurufen

%Vor%     
___
3
Antworten

Planen Sie Aufgaben mit Django-Sellerie basierend auf Benutzereingaben

Ich baue ein Reporting-Portal mit django. In diesem Portal muss ich Benutzern die Möglichkeit geben, Berichte so zu planen, dass sie wiederholt ausgeführt werden. Ich habe Django-Sellerie erforscht und verstehe, dass Sie den periodic_task-Dekora...
08.12.2011, 21:05
2
Antworten

Wie bekomme ich Djangosellerie, um für meine Funktionstests in die Testdatenbank zu schreiben?

Ich arbeite an einer Django-Anwendung. Wir verwenden Sellerie, um Schreibvorgänge in unsere Mongo-Datenbank zu schreiben. Ich versuche, einen Funktionstest (mit Selen) für eine Funktion zu schreiben, die etwas in Sellerie in die Warteschlange st...
19.10.2012, 06:38
1
Antwort

Worker startet und schaltet sich dann aus. Keine Fehler

Ich habe ein Problem mit der Einführung von Sellerie Aufgaben. Wenn Sie den folgenden Befehl lokal ausführen celery -A codebase worker --loglevel=debug --beat bekomme ich die folgende Antwort %Vor% Alles ist in Ordnung, der Prozess geht w...
05.09.2014, 15:07
2
Antworten

Implementierung von "idle" und "normalen" Priority Queues für lang andauernde Aufgaben in Sellery

Ich versuche, ein folgendes Szenario mit Sellerie zu implementieren: zwei Warteschlangen mit (gleichen) lang laufenden Aufgaben, eine für "normal" und die andere für "Leerlauf" -Priorität. Ich würde die Mitarbeiter dazu bringen, beide Wartesc...
17.09.2011, 09:46
3
Antworten

django / Sellerie - Selleriestatus: Fehler: Keine Knoten haben innerhalb der Zeitbeschränkung geantwortet

Ich versuche, ein einfaches Beispiel für Sellerie in meinem Produktionsserver zu implementieren, ich habe das Tutorial in der Sellerie-Website über Sellerie als Daemon ausgeführt Ссылка , und ich habe die Konfigurationsdatei in / etc / default...
27.11.2012, 00:46
2
Antworten

Periodische Aufgaben in Django-Sellerie stoppen / löschen

Ich habe es geschafft, periodische Aufgaben in Django-Sellerie zu bekommen, indem ich PeriodicTask abbaute. Ich habe versucht, eine Testaufgabe zu erstellen und sie so zu starten, dass sie etwas nutzlos macht. Es klappt. Jetzt kann ich es nic...
22.11.2011, 17:14
4
Antworten

Aufhebung der Kreisimporte in Sellerie und Django

Ich habe eine Django-App, die Sellerie verwendet, um einige Aufgaben zu entfernen. Hauptsächlich wird die Berechnung einiger Felder in einer Datenbanktabelle verschoben. Also, ich habe eine task.py: %Vor% Und in models.py %Vor% Nun wi...
15.10.2014, 09:28