es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo agregar configuraciones de celery a Django?

Me gustaría agregar la siguiente modificación de configuración de Celery a la aplicación Django:

worker_send_task_event = False
task_ignore_result = True
task_acks_late = True 
worker_prefetch_multiplier = 10  

En mi archivo celery.py, tengo lo siguiente:

import os

from celery import Celery

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'server.settings')

app = Celery('server')

app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()

Y mi tasks.py es el siguiente:

@shared_task
def some_task():
    pass

Celery se ejecuta de la siguiente manera:

command: celery -A server worker -Ofair — without-gossip — without-mingle — without-heartbeat

Los he agregado directamente al archivo settings.py de Django, pero no estoy seguro si Celery realmente ha recogido esa configuración. Así que me pregunto si hay otra forma de agregarlos o si alguien tiene una experiencia similar.

Estoy utilizando:

celery==5.2.1
Django==3.2.5
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para agregar la modificación de la configuración de Celery a la aplicación Django, puedes agregarlas directamente en el espacio de nombres CELERY del archivo settings.py de tu proyecto Django:

    CELERY = {
        'worker_send_task_event': False,
        'task_ignore_result': True,
        'task_acks_late': True,
        'worker_prefetch_multiplier': 10,
    }
    

    Esto debería funcionar y Celery debería utilizar esta configuración. Sin embargo, si quieres confirmar que Celery está utilizando estos ajustes, puedes ejecutar el siguiente comando:

    celery -A server inspect stats
    

    Esto te proporcionará una lista de todas las configuraciones que Celery está utilizando actualmente. Si todas las configuraciones que agregaste en settings.py están presentes en el resultado, entonces sabrás que Celery está utilizando esas configuraciones.

    Otra forma de agregar estas configuraciones es a través del método app.conf.update() en tu archivo celery.py:

    import os
    
    from celery import Celery
    
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'server.settings')
    
    app = Celery('server')
    
    app.config_from_object('django.conf:settings', namespace='CELERY')
    app.autodiscover_tasks()
    
    # Agrega las configuraciones aquí
    app.conf.update({
        'worker_send_task_event': False,
        'task_ignore_result': True,
        'task_acks_late': True,
        'worker_prefetch_multiplier': 10,
    })
    

    Esto también funcionará y debería utilizar las configuraciones.

Comments are closed.