def METHOD_NAME(self, start_from_user_id):
    """Cycles through all quests for all users to update the cache of available quests (PreqAllConditionsMet)
    This is done in bunches of users (CELERY_TASKS_BUNCH_SIZE), recursively.
    Args:
        user_id to start with for the next bunch of calculations
    """
    if start_from_user_id == 1 and cache.get('update_conditions_all_task_waiting'):
        # Return value is displayed at the end of the celery log
        return "Skipping task, already running."
    cache.set('update_conditions_all_task_waiting', True, settings.CONDITIONS_UPDATE_COUNTDOWN)
    # only cycle through users currently in a course
    users = CourseStudent.objects.all_users_for_active_semester()
    users = users.order_by('id').filter(id__gte=start_from_user_id)
    users = list(users.values_list('id', flat=True)[:settings.CELERY_TASKS_BUNCH_SIZE])  # noqa
    for uid in users:
        update_quest_conditions_for_user.apply_async(args=[uid], queue='default')
    if users:
        user = User.objects.filter(id__gte=users[-1] + 1).values('id').first()
        user and self.apply_async(args=[user['id']], queue='default', countdown=5)