Sellerie Aufgaben mit eta werden aus RabbitMQ entfernt

9

Ich verwende Django 1.6 , RabbitMQ 3.5.6 , celery 3.1.19 .

Es gibt eine periodische Aufgabe, die alle 30 Sekunden ausgeführt wird und 200 Aufgaben mit dem angegebenen eta -Parameter erstellt. Nachdem ich den Sellerie-Arbeiter ausgeführt habe, wird langsam die Warteschlange in RabbitMQ erstellt und ich sehe rund 1200 geplante Aufgaben, die darauf warten, gefeuert zu werden. Dann starte ich den Sellerie-Arbeiter neu und alle wartenden 1200 geplanten Aufgaben werden von RabbitMQ entfernt .

Wie ich Aufgaben erstelle: my_task.apply_async((arg1, arg2), eta=my_object.time_in_future)

Ich führe den Arbeiter folgendermaßen aus: python manage.py celery worker -Q my_tasks_1 -A my_app -l

CELERY_ACKS_LATE wird in Django-Einstellungen auf True gesetzt. Ich konnte keinen möglichen Grund finden.

Soll ich den Worker mit einer anderen Konfiguration / einem anderen Flag / Parameter ausführen? Irgendeine Idee?

    
Emin Buğra Saral 28.12.2015, 14:25
quelle

1 Antwort

1

Soweit ich weiß, verlässt sich Sellery nicht auf die Warteschlangen von RabbitMQ. Es implementiert ETA / Countdown intern.
Es scheint, dass Sie genug Mitarbeiter haben, die in der Lage sind, genug Nachrichten zu holen und sie intern zu planen.
Beachten Sie, dass Sie nicht 200 Arbeiter brauchen. Sie haben den Prefetch-Multiplikator auf den Standardwert gesetzt, so dass Sie weniger benötigen.

    
the_drow 01.02.2016 09:10
quelle