2016-04-05 8 views
2

Ich bin neu in Celery. Ich habe eine Aufgabe, die nicht funktioniert und ich weiß nicht warum. Im mit rabbitmq Hier ist mein Code:Django. Einfache Sellerie Aufgabe funktioniert nicht

In settings.py:

BROKER_URL = "amqp://[email protected]//" 

tasks.py:

from celery.decorators import task 
from celery.utils.log import get_task_logger 
from hisoka.models import FeralSpirit, Fireball 

logger = get_task_logger(__name__) 

@task 
def test_task(): 
    fireball = Fireball.objects.last() 
    feral_spirit = FeralSpirit.objects.filter(fireball=fireball).last() 

    counters = feral_spirit.increase_counter() 

    logger.info(feral_spirit + "counters: " + counters) 

Die Aufgabe wird nur ein Test, ist es entworfen, um einen Zähler zu erhöhen, dass ist ein Bereich des FeralSpirit-Modells. Es funktioniert richtig, wenn ich mit delay()

views.py

class FireballDetail(ListView): 

    def get_queryset(self, *args, **kwargs): 
     test_task.delay() 

     ... 

die Funktion nicht aufrufen Ich habe einen rabbitmq Server korrekt ausgeführt wird (oder zumindest sieht es so aus, dass) an einem Terminal und der django localhost Server auf einem anderen Terminal. Fehle ich etwas Offensichtliches? Ich habe eine celery.py und eine modifizierte __init__ Datei, genau nach der documentation.

+0

Wenn Sie "django localhost server" sagten, meintest du deinen Selleriearbeiter? Überprüfen Sie, ob Ihr Sellerie-Arbeiter läuft. – anupsabraham

Antwort

1

Wahrscheinlich Ihr Sellerie Arbeiter nicht läuft,

celery -A {project_name} worker --loglevel=info -Q {queue_name} 

Ersatz den Wert von project_name und queue_name versuchen. Standardwarteschlangenname ist default

+0

Danke für dich Antwort Mann, ich konnte es heute nicht testen. Ich werde es morgen tun. – alejoss

+0

Hey Mann. Du warst richtig, mein Selleriearbeiter rannte nicht. Aber jetzt läuft es und es funktioniert immer noch nicht. Habe gerade die Frage bearbeitet, um diese Info hinzuzufügen. – alejoss