Django-Sellerie und RabbitMQ führen keine Aufgaben aus

8

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 werden auf einem separaten Computer ausgeführt, und selleryconfig.py ist so konfiguriert, dass diese bestimmte RabbitMQ-Instanz als Back-End verwendet wird.

Auf dem Anwendungsserver habe ich versucht, die Sellerie-Aufgabe manuell über python manage.py shell abzubrechen.

Die eigentliche Aufgabe wird wie folgt aufgerufen:

%Vor%

Es gibt AsyncResult wie erwartet zurück, aber sein Status ist für immer 'PENDING' .

Um zu sehen, ob der RabbitMQ-Broker die Nachricht erhalten hat, habe ich Folgendes ausgeführt:

%Vor%

Ich bin mir nicht sicher, was das bedeutet, RabbitMQ scheint sicherlich irgendeine Art von Anfrage zu erhalten, sonst hätte man sonst eine Warteschlange für die Aufgabe mit der ID: 853daa7b8be54a25a1d01552b38a0d21 anlegen können. Es scheint nur keine Nachrichten zu halten?

Ich habe versucht, sowohl Sellerie als auch RabbitMQ neu zu starten und das Problem besteht weiterhin.

Sellerie läuft so: $ python /home/[project]/console/manage.py celeryd -B -c2 --loglevel=INFO

Beachten Sie, dass die Selleriebeat / geplanten Aufgaben scheinbar gut laufen.

[EDIT]: Es gibt keine RabbitMQ-Konfiguration, da sie vom Skript init.d eingebunden wird: /usr/lib/erlang/erts-5.8.5/bin/beam.smp -W w -K true -A30 -P 1048576 -- -root /usr/lib/erlang -progname erl -- -home /var/lib/rabbitmq -- -noshell -noinput -sname rabbit@hostname -boot /var/lib/rabbitmq/mnesia/rabbit@hostname-plugins-expand/rabbit -kernel inet_default_connect_options [{nodelay,true}] -sasl errlog_type error -sasl sasl_error_logger false -rabbit error_logger {file,"/var/log/rabbitmq/[email protected]"} -rabbit sasl_error_logger {file,"/var/log/rabbitmq/[email protected]"} -os_mon start_cpu_sup true -os_mon start_disksup false -os_mon start_memsup false -mnesia dir "/var/lib/rabbitmq/mnesia/rabbit@hostname"

[EDIT2]: Hier ist die Selleryconfig, die wir für die Arbeiter verwenden. Die selbe Konfiguration wird für den Produzenten verwendet, außer dass natürlich localhost in die Box mit RabbitMQ-Broker geändert wird.

%Vor%

[EDIT3]: Unsere Infrastruktur ist wie folgt eingerichtet:

    
sw00 31.12.2013, 12:53
quelle

1 Antwort

2

Wir haben das Problem gelöst.

Es gab eine lang andauernde Selleriebeat-Aufgabe (~ 430s), die alle 60 Sekunden ausgeführt wurde. Dies hat alle Arbeiter in einer Warteschlange gejagt.

    
sw00 23.01.2014, 08:21
quelle