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.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible especificar un retraso entre cada llamada de trabajador configurando Celery para utilizar un intermediario de mensajes como RabbitMQ o Redis con un límite específico de velocidad.

    Por ejemplo, si la API impone un retraso de 3 segundos entre cada llamada, puedes establecer el límite de velocidad en 1 tarea por cada 3 segundos en la configuración de Celery. Esto asegurará que el intermediario de mensajes no envíe más de una tarea al trabajador en ese intervalo de tiempo.

    Para lograr esto, puedes establecer el límite de velocidad en la definición de la tarea utilizando el atributo rate_limit, o en la configuración de Celery utilizando la opción CELERY_DEFAULT_RATE_LIMIT.

    Aquí tienes un ejemplo de cómo establecer el límite de velocidad en 1 tarea por cada 3 segundos en la configuración de Celery:

    # Configuración de Celery
    BROKER_URL = 'redis://localhost:6379/0'
    CELERY_DEFAULT_RATE_LIMIT = '1/s'
    

    Esta configuración garantizará que el intermediario de mensajes envíe como máximo una tarea por segundo al trabajador. Si una tarea tarda más de 3 segundos en completarse, el intermediario de mensajes encolará la siguiente tarea y la enviará solo después de que haya transcurrido el intervalo de tiempo especificado por el límite de velocidad.

    Es importante destacar que es necesario probar y ajustar el límite de velocidad para asegurarse de que respeta el límite de velocidad de la API y funciona de manera óptima para tu caso de uso específico.

Comments are closed.