Обрабатывает время загрузки большого JSON для автозаполнения на стороне сервера

#python #rest #http

#python #остальное #http

Вопрос:

Здравствуйте, у меня есть приложение, в котором есть предложения по автозаполнению для пользователя на основе ввода в строке поиска.

Я использую пакет с именем fast_autocomplete, который отлично работает, но у меня проблема в том, что каждый раз, когда я хочу использовать прогноз, мне приходится загружать 50 МБ данных JSON, которые я использую для автозаполнения (500 Тыс. записей). При запуске на стороне сервера загрузка, анализ и отправка данных происходит довольно медленно для того, что вы бы делали, за исключением функции автозаполнения. Это меньше секунды, и прямо сейчас (локальное тестирование) это занимает несколько секунд.

Проверка проблемы кажется, что загрузка JSON размером 50 МБ для каждого запроса занимает много времени. Загрузка данных и создание объекта автозаполнения каждый раз при поступлении нового запроса — пустая трата времени.

Для этого я задался вопросом, есть ли способ постоянно поддерживать загруженный объект в рабочем состоянии, и когда поступает новый HTTP-запрос, JSON уже загружен. Насколько крупные сайты, такие как Amazon, Ebay, Google, так быстро заполняют автозаполнение?

Ответ №1:

Если я правильно понимаю, вы загружаете свои данные для каждого запроса, несмотря на то, что эти данные остаются неизменными для каждого пользователя. Почему бы не кэшировать эти данные? или сохранить его за пределами области действия обработчика вашего запроса?

 auto_complete_data = open("...").read()

@route('/autocomplete')
def autocomplete():
  # keep reusing the `auto_complete_data`
  

Комментарии:

1. Спасибо! Я не думал об этом, позор мне… отлично работает! большое спасибо.