suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Python – Celery+Rabbitmq asynchrone Aufgabe, Warteschlangennachrichten nehmen ständig zu

Wenn Sellerie mit Rabbitmq zusammenarbeitet, um asynchrone Aufgaben auszuführen, wird festgestellt, dass die Anzahl der Nachrichten in Rabbitmq ständig zunimmt, diese Nachrichten jedoch tatsächlich von der Aufgabe verarbeitet wurden.

Bei einem Blick auf das Backend, das mit rabbimtq geliefert wird, haben wir festgestellt, dass in Nachrichten in der Warteschlange die Anzahl der „Bereit“- und „Gesamt“-Nachrichten mehr als 5.000 erreicht hat und der Wert für „Unbestätigt“ 0 beträgt. Wenn es jedoch tatsächlich funktioniert, ändert sich der Wert von unacknowledged, wird aber schließlich 0. Es gibt nichts Besonderes an der Konfiguration von Sellerie. Es wird nur der folgende Inhalt festgelegt:
CELERY_IMPORTS = ('testtasks',)
BROKER_URL = '. amqp://guest:guest@localhost:5672//'
CELERY_RESULT_BACKEND = 'amqp://'

Dann schauen Sie sich die Systemressourcen an, die relativ groß sind, wahrscheinlich werden vorübergehend mehr als 300 M verwendet.

Stimmt etwas mit der Konfiguration von Sellerie nicht?

高洛峰高洛峰2752 Tage vor1152

Antworte allen(1)Ich werde antworten

  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-06-22 11:53:49

    已经解决了,升级了 rabbitmq 到 3.3 以上版本就可以了。
    之前用的是 rabbitmq 3.1 的版本,然后 celery 是 3.1 的版本


    真正解决问题的方法是,在task里增加一个ignore_result=True属性,如下
    @app.task(ignore_result=True)

    Antwort
    0
  • StornierenAntwort