FastAPI Task Limiter – это сервис, который управляет выполнением задач с использованием блокировки. Это гарантирует, что только один запрос будет выполняться одновременно, а другие запросы будут ждать завершения текущего.
Клонируйте репозиторий и перейдите в директорию проекта:
git clone [email protected]:poligrafo/fastapi-task-limiter.git
cd fastapi-task-limiter
Для запуска проекта используйте Docker и Docker Compose:
docker-compose up --build
Чтобы убедиться, что сервис работает правильно, выполните три параллельных запроса к маршруту /test:
curl -X GET http://localhost:8000/test & curl -X GET http://localhost:8000/test & curl -X GET http://localhost:8000/test
Ожидаемый результат
- Первый запрос завершится примерно через 3 секунды.
- Второй запрос завершится через ~6 секунд.
- Третий запрос завершится через ~9 секунд.
Пример ответа каждого запроса:
{
"elapsed": 3.0009
}
Это означает, что запросы выполняются последовательно, как и предусмотрено.
Логи выполнения запросов можно просмотреть в консоли или в файле /app/logs/app.log внутри контейнера.
Пример лога:
2024-09-11 21:52:02,502 - app - INFO - Work completed. Elapsed time: 3.0004 seconds