def METHOD_NAME(self) -> bool:
    now = timezone.now()
    last_task_run = self.task_runs.order_by("-started_at").first()
    if not last_task_run:
        # If we have never run this task, then we should execute it only if
        # the time has passed after which we want to ensure this task runs.
        # This allows us to control when intensive tasks should be run.
        return not (self.first_run_time and self.first_run_time > now.time())
    # if the last run was at t- run_every, then we should execute it
    if (timezone.now() - last_task_run.started_at) >= self.run_every:
        return True
    # if the last run was not a success and we do not have
    # more than 3 failures in t- run_every, then we should execute it
    if (
        last_task_run.result != TaskResult.SUCCESS.name
        and self.task_runs.filter(started_at__gte=(now - self.run_every)).count()
        <= 3
    ):
        return True
    # otherwise, we should not execute it
    return False