diff --git a/django_celery_beat/schedulers.py b/django_celery_beat/schedulers.py index 846b97a9..c041f5b7 100644 --- a/django_celery_beat/schedulers.py +++ b/django_celery_beat/schedulers.py @@ -119,6 +119,15 @@ def is_due(self): ) return schedules.schedstate(False, delay) + # EXPIRED TASK: Disable task when expired + if self.model.expires is not None: + now = self._default_now() + if getattr(settings, 'DJANGO_CELERY_BEAT_TZ_AWARE', True): + now = maybe_make_aware(self._default_now()) + + if now >= self.model.expires: + self._disable(self.model) + # ONE OFF TASK: Disable one off tasks after they've ran once if self.model.one_off and self.model.enabled \ and self.model.total_run_count > 0: