Skip to content

petrarka/avito_test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

avito_test

Тестовое задание avito. Глобальные переменные storage и banned можно заменить на mongodb или 2 таблицы в любой реляционной бд, если потребуется сохронять состояние между перезапусками или если серверов несколько.

Запуск сервиса

docker-compose build
docker-compose up

или

pip install -r requirements.txt
python3.7 ./main.py

Запуск тестов

pytest

Настройки

В файле app.toml
times - Ограничение на количество запросов
second - Длительность окна в секундах
bantime - Длительность бана за привышеие количества запросов в секундах
mask - маска подсети

Для условий из задания настройки выгледят так:

[ip]
mask = "255.255.255.0" 

[slow]
times = 100
seconds = 60
bantime = 180

Эндпоинты

/ - быстрый эндпоинт для тестов, ограничения 100 запросов в секунду и 5 секунд бана
/slow - настраиваемый эндпоинт, настройки выше
/rs - сбрасывает статистику и баны для всех эндпоинтов для подсети к которой пренадлежит ip из заголовка

Ответы

Код 401 и json с ошибкой header error если ip в хедере не верный или хедера нет
Код 429 и json с ошибкой Too many requests если попал в бан
Код 200 и статика, если всё ок

About

test task for avito

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors