emails • Tareas que consuman una gran can1dad de 1empo: Procesar mul1media, crear XLSX, PDFs, etc • Tareas repe11vas: Scrapping, traer data de un API, feed, etc. @henocdz
import get_object_or_None @task(name='some_django_app.notify_user', ignore_result=True) def notify_user(user_pk): user = get_object_or_None(CustomUser, pk=user_pk) if user is not None: user.notify_something() @henocdz
Ejecutar después de N segundos some_task.apply_async(args=argv, kwargs=kwargs, countdown=10) # Cancelar la ejecución si no sucede después de cierta fecha tomorrow = today + timedelta(hours=1) some_task.apply_async(args=argv, kwargs=kwargs, expires=tomorrow) @henocdz
class BaseTask(Task): """Abstract base class for all tasks in my app.""" abstract = True def on_retry(self, exc, task_id, args, kwargs, einfo): """Log the exceptions to sentry at retry.""" sentrycli.captureException(exc) super(BaseTask, self).on_retry(exc, task_id, args, kwargs, einfo) def on_failure(self, exc, task_id, args, kwargs, einfo): """Log the exceptions to sentry.""" sentrycli.captureException(exc) super(BaseTask, self).on_failure(exc, task_id, args, kwargs, einfo) @henocdz