Python – Celery+Rabbitmq asynchrone Aufgabe, Warteschlangennachrichten nehmen ständig zu
高洛峰
高洛峰 2017-06-22 11:51:49
0
1
1060

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?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

Antworte allen (1)
曾经蜡笔没有小新

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


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

    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage
    Über uns Haftungsausschluss Sitemap
    Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!