Verständnis Sellerie Aufgabe prefetching

Ich habe gerade herausgefunden über die Konfigurations-option CELERYD_PREFETCH_MULTIPLIER (docs). Die Standardeinstellung ist 4, aber (ich glaube) möchte ich das prefetching auszuschalten oder so gering wie möglich. Ich setzen Sie ihn auf 1, und das ist nahe genug, um das, was ich Suche, aber es gibt immer noch einige Dinge, die ich nicht verstehe:

  1. Warum ist das prefetching eine gute Idee? Sehe ich nicht wirklich einen Grund für ihn, es sei denn, es gibt eine Menge Wartezeit zwischen der message-queue und den Arbeitnehmer (in meinem Fall, Sie sind momentan auf dem gleichen host und im schlimmsten Fall könnte schließlich laufen auf unterschiedlichen hosts im gleichen Datencenter). Die Dokumentation erwähnt nur die Nachteile, sondern kann erklären, was die Vorteile sind.

  2. Viele Menschen scheinen dies auf 0 gesetzt, erwartet werden in der Lage zu deaktivieren prefetching, die Möglichkeit (eine vernünftige Annahme meiner Meinung nach). Jedoch 0 bedeutet unbegrenzte prefetching. Warum würde jemand jemals wollen unlimited prefetching, das nicht vollständig beseitigt die Parallelität/Asynchronität Sie führte eine task-queue für den ersten Platz?

  3. Warum kann dieses Verfahren nicht abgeschaltet werden? Es ist vielleicht nicht eine gute Idee für performance, es zu deaktivieren in den meisten Fällen aber gibt es einen technischen Grund für diese nicht möglich sein? Oder ist es nur nicht umgesetzt werden?

  4. Manchmal, diese option ist verbunden mit CELERY_ACKS_LATE. Zum Beispiel. Roger Hu schreibt «[...] oft was [Benutzer] wirklich wollen ist ein Arbeitnehmer nur dann behalten, wie viele Aufgaben da sind Kind-Prozesse. Dies ist aber nicht möglich, ohne dass späte Danksagung [...]» ich verstehe nicht, wie diese zwei Optionen verbunden sind, und warum das eine ist ohne das andere nicht möglich. Eine weitere Erwähnung der Verbindung gefunden werden kann hier. Kann mir jemand erklären, warum die zwei Optionen verbunden sind?

Schreibe einen Kommentar