Если вам не нравится использовать редис и сессии, то можете использовать память и куки. У вас должен быть глобально доступный объект, в который вы пишете ID пользователя(куки), по окончании обработки задачи удаляете ID из объекта. При поступлении запроса, смотрите куку, далее смотрите в объекте с записями, если такой пользователь есть, то возвращаем 429 ошибку, если куки нет, или в объекте нет записи о ней, то можно заводить новую задачу. Но вообще, можно было бы организовать очередь задач, но это уже совсем другая история и надо смотреть на то, что вы хотите получить на выходе