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%     
___
2
Antworten

Django Sellerie Beat Admin Update Cron Zeitplan Periodische Task nicht wirksam

Ich betreibe eine Website mit Django 10, RabbitMQ und Sellerie 4 auf CentOS 7. Meine Sellerie-Beat- und Sellerie-Worker-Instanzen werden vom Supervisor gesteuert und ich benutze den Django-Sellerie-Datenbank-Scheduler. Ich habe eine Cron-S...
13.11.2016, 23:04
1
Antwort

Wie benutze ich Supervisor + Django + Sellerie mit mehreren Warteschlangen und Arbeitern?

Ich benutze Sellery + Django + Supervisord und versuche, eine "Priorität" einzurichten, indem ich drei verschiedene Warteschlangen erstelle (wie in Ссылка ). Gibt es eine Möglichkeit, Sellerie und Arbeiter für jede Warteschlange in einem Bef...
01.08.2013, 18:29
1
Antwort

django Sellerie schlagen DBAccessError

Ich führe Django + Sellerie mit Selleriebeat, und ich bekomme diesen Fehler %Vor% Ich habe python manage.py celeryd -B verwendet, um Sellerie zu schlagen. Es scheint, dass der Sellerie-Arbeiter nicht das Problem ist, aber der celerybeat...
05.11.2014, 11:31
2
Antworten

django-sellery Warnungen über settings.DEBUG

Ich habe ein paar Fragen zum Laufen von Djcelery. Wenn ich renne %Vor% Die Arbeiter scheinen angefangen zu haben, aber die Warnungen betreffen mich: %Vor% Für diese Warnmeldung wurde gegoogelt, aber niemand scheint sich darum zu kümme...
08.12.2011, 06:12
3
Antworten

Mit Django-Nase und Django-Sellerie zusammen - Unit Testing

Ich habe ein Django-Projekt, das Django-Nase verwendet. Ich möchte dem Projekt django-sellery hinzufügen. Ich verwende Komponententests. Sowohl Django-Nose als auch Django-Sellerie benötigen eine TEST_RUNNER Einstellung in meiner settings.py...
23.03.2013, 02:38
1
Antwort

Django Sellerie ConnectionError: Zu viele Herzschläge verpasst

Frage Wie kann ich die ConnectionError: Too many heartbeats missed von Sellerie lösen? Beispielfehler %Vor% App-Übersicht Django App mit Sellerie für regelmäßige Hintergrundaufgaben Auf Heroku gehostet Einzelaufgabe, die all...
11.02.2013, 17:11
1
Antwort

Sellery AsyncResult get Hostname

Ich habe eine Sellerie eingerichtet, die zwei verschiedene Server verwendet, um Aufgaben zu bearbeiten. Ich versuche herauszufinden, auf welche Weise der Server am besten funktioniert. Ich habe die Dokumente durchgesehen und nichts über das Abru...
04.12.2012, 16:01
1
Antwort

Einige Sellerie-Aufgaben funktionieren, andere sind nicht registriert

Ich folge dem Tutorial von Celery Django und den Aufgaben, die ich sehe im Beispiel ( add, mul ) arbeite perfekt für mich. Ich bekomme die richtige Antwort, wenn ich res = add.delay(1,2); res.get() mache. Aber ich bekomme *** NotRegis...
11.11.2016, 11:22
2
Antworten

django-sellerie-E-Mail-Aufgabe wird nicht ausgeführt

ist ein wenig hängengeblieben und hat das Problem des asynchronen E-Mail-Versands gelöst. Ich würde gerne Sellerie und Django-Datenbank als Backend verwenden. da für das einzige Ding, das ich dieses Warteschlangenverwaltungswerkzeug für E-Mail v...
03.07.2013, 07:14
1
Antwort

Django-Sellerie und RabbitMQ führen keine Aufgaben aus

Wir haben eine Django 1.3 Anwendung mit django-sellery 2.5.5 , die seit Monaten in der Produktion läuft, aber auf einmal einer der Sellerie Aufgaben können jetzt nicht ausgeführt werden. Der RabbitMQ-Broker und die Sellery-Mitarbeiter werd...
31.12.2013, 12:53