Я щойно дізнався про варіант конфігурації CELERYD_PREFETCH_MULTIPLIER
( docs ). За замовчуванням - 4, але (я вважаю) я хочу, щоб попереднє завантаження було вимкнено або якомога нижче. Я встановив для нього значення 1, що досить близько до того, що я шукаю, але все ще є деякі речі, які я не розумію:
Чому це попереднє вибору гарної ідеї? Я насправді не бачу причини цього, за винятком випадків, коли між чергою повідомлень та працівниками є велика затримка (у моєму випадку вони наразі працюють на одному хості і в гіршому випадку можуть з часом працювати на різних хостах в одних і тих самих даних центр). Документація лише згадує про недоліки, але не може пояснити, які переваги.
Здається, багато людей встановлюють це значення 0, сподіваючись, що зможуть відключити попереднє завантаження таким чином (на мій погляд, це обґрунтоване припущення). Однак 0 означає необмежену попередню вибірку. Чому хтось коли-небудь бажає необмеженого попереднього завантаження, чи не повністю це усуває паралельність / асинхронність, для якої ви запровадили чергу завдань?
Чому попереднє завантаження не можна вимкнути? Можливо, для виступу в більшості випадків не є гарною ідеєю вимкнути його, але чи є технічна причина, що це неможливо? Або це просто не реалізовано?
Іноді ця опція підключається до
CELERY_ACKS_LATE
. Наприклад. Роджер Ху пише: «[…] часто те, що [користувачі] насправді хочуть, - це щоб працівник резервував лише стільки завдань, скільки є дочірніх процесів. Але це неможливо без увімкнення пізнього підтвердження […] ». Я не розумію, як ці два варіанти пов’язані, і чому один неможливий без іншого. Ще одну згадку про зв’язок можна знайти тут . Хтось може пояснити, чому два варіанти пов’язані?