celery - schedulers - Establecer el límite de tiempo en una tarea específica con apio
celery schedulers (2)
Este es un ejemplo con decorador para una Tarea específica y Apio 3.1.23 usando soft_time_limit = 10000
@task(bind=True, default_retry_delay=30, max_retries=3, soft_time_limit=10000)
def process_task(self, task_instance):
"""Task processing."""
pass
Tengo una tarea en Apio que podría funcionar durante 10.000 segundos mientras funciona normalmente. Sin embargo, el resto de mis tareas deberían hacerse en menos de un segundo. ¿Cómo puedo establecer un límite de tiempo para la tarea de ejecución intencionalmente larga sin cambiar el límite de tiempo en las tareas de ejecución corta?
Puede establecer límites de tiempo de la tarea ( hard y / o soft ) al definir una tarea o durante una llamada.
from celery.exceptions import SoftTimeLimitExceeded
@celery.task(time_limit=20)
def mytask():
try:
return do_work()
except SoftTimeLimitExceeded:
cleanup_in_a_hurry()
o
mytask.apply_async(args=[], kwargs={}, time_limit=30, soft_time_limit=10)