Me acabo de enterar de la opción de configuración CELERYD_PREFETCH_MULTIPLIER
( documentos ). El valor predeterminado es 4, pero (creo) quiero que la captación previa esté desactivada o lo más baja posible. Lo configuré en 1 ahora, que está lo suficientemente cerca de lo que estoy buscando, pero todavía hay algunas cosas que no entiendo:
¿Por qué esta búsqueda previa es una buena idea? Realmente no veo una razón para ello, a menos que haya mucha latencia entre la cola de mensajes y los trabajadores (en mi caso, actualmente se están ejecutando en el mismo host y, en el peor de los casos, podrían eventualmente ejecutarse en diferentes hosts en los mismos datos centrar). La documentación solo menciona las desventajas, pero no explica cuáles son las ventajas.
Mucha gente parece establecer esto en 0, esperando poder desactivar la captación previa de esa manera (una suposición razonable en mi opinión). Sin embargo, 0 significa captura previa ilimitada. ¿Por qué alguien querría una búsqueda previa ilimitada? ¿No elimina eso por completo la concurrencia / asincronicidad para la que introdujo una cola de tareas en primer lugar?
¿Por qué no se puede desactivar la captación previa? Puede que no sea una buena idea que el rendimiento lo desactive en la mayoría de los casos, pero ¿hay alguna razón técnica para que esto no sea posible? ¿O simplemente no está implementado?
A veces, esta opción está conectada a
CELERY_ACKS_LATE
. Por ejemplo. Roger Hu escribe «[…] a menudo lo que [los usuarios] realmente quieren es que un trabajador solo reserve tantas tareas como procesos secundarios haya. Pero esto no es posible sin habilitar los reconocimientos tardíos […] »No entiendo cómo están conectadas estas dos opciones y por qué una no es posible sin la otra. Aquí se puede encontrar otra mención de la conexión . ¿Alguien puede explicar por qué las dos opciones están conectadas?