Задание.
Нужно разработать веб-сервер на Django для хранения списка городов и проверки уже известных городов по названиям.
-
У сервера должен быть один endpoint.
urlpatterns = [ ... path('', GetCity.as_view()), ]
-
Он принимает в качестве запроса название города.
например, JSON-запрос:
{"name":"Kazan"}
-
Если такой город есть в БД, то вернуть json со значением true.
{true}
-
Если город отсутствует в БД, то записать в БД, но вернуть значение false.
{false}
-
Для скорости работы нужно организовать кэш. Некоторые города могут проверяться очень часто, и чтобы не создавать лишнюю нагрузку на БД, можно поддерживать N значений в памяти и сравнивать с ними. Пусть это будет простейший кэш, который хранит список из N=100 последних запрошенных городов. Как только приходит запрос с городом, который отсутствует в кэше, нужно
Кэш описан в файле: cities\searchapp\vies.py и настройках проекта
-
проверить город в БД и узнать ответ,
-
при надобности, удалить из кэша самый старый запрошенный город,
-
добавить в кэш только что запрошенный город. Кэш должен работать одинаково быстро как для N=100, так и для N=100000000
-
Сделать файл с тестом, в котором будет 100000 строк с городами (многие повторяются), и скрипт, который читает этот файл, последовательно запрашивает у сервера ответы и сохраняет ответы в выходной файл.
скрипт записан в файл: cities\searchapp\script.py результат работы скрипта записан в файл: cities\searchapp\result.txt
-
В отдельном файле заранее записать для каждого города, какой ответ ожидается. Чтобы можно было сравнить результат работы веб сервера и эталонный ожидаемый результат.
файл с ответом для каждого города: cities\searchapp\standard.txt