Ich habe gerade von der Konfigurationsoption CELERYD_PREFETCH_MULTIPLIER
( docs ) erfahren . Der Standardwert ist 4, aber (glaube ich) ich möchte das Prefetching deaktivieren oder so niedrig wie möglich halten. Ich habe es jetzt auf 1 gesetzt, was nah genug an dem liegt, wonach ich suche, aber es gibt noch einige Dinge, die ich nicht verstehe:
Warum ist das Prefetching eine gute Idee? Ich sehe keinen Grund dafür, es sei denn, zwischen der Nachrichtenwarteschlange und den Arbeitern besteht eine große Latenz (in meinem Fall werden sie derzeit auf demselben Host ausgeführt und im schlimmsten Fall möglicherweise auf verschiedenen Hosts mit denselben Daten Center). In der Dokumentation werden nur die Nachteile erwähnt, die Vorteile jedoch nicht erläutert.
Viele Leute scheinen dies auf 0 zu setzen und erwarten, dass sie das Prefetching auf diese Weise deaktivieren können (meiner Meinung nach eine vernünftige Annahme). 0 bedeutet jedoch unbegrenztes Vorabrufen. Warum sollte jemand jemals unbegrenztes Prefetching wünschen, beseitigt dies nicht vollständig die Parallelität / Asynchronität, für die Sie eine Task-Warteschlange eingeführt haben?
Warum kann das Prefetching nicht deaktiviert werden? In den meisten Fällen ist es möglicherweise keine gute Idee, die Leistung auszuschalten. Gibt es jedoch einen technischen Grund dafür, dass dies nicht möglich ist? Oder ist es einfach nicht implementiert?
Manchmal ist diese Option mit verbunden
CELERY_ACKS_LATE
. Zum Beispiel. Roger Hu schreibt: «[…] Oft möchten [Benutzer], dass ein Mitarbeiter nur so viele Aufgaben reserviert, wie untergeordnete Prozesse vorhanden sind. Dies ist jedoch nicht möglich, ohne verspätete Bestätigungen zu ermöglichen. […] »Ich verstehe nicht, wie diese beiden Optionen miteinander verbunden sind und warum eine ohne die andere nicht möglich ist. Eine weitere Erwähnung der Verbindung finden Sie hier . Kann jemand erklären, warum die beiden Optionen miteinander verbunden sind?