Что означает постоянное соединение в Elasticsearch Python API?
Я использую API Python Elasticsearch для взаимодействия с ES в моем приложении. В настоящее время, как только приложение получает запрос пользователя, оно делает esclient = Elasticsearch("127.0.0.1")
а затем использует это esclient
искать необходимые данные. Но я недавно прочитал, что ES имеет постоянные связи. Так,
- Должен ли я сохранить
esclient
где-то и повторно использовать это? Если да, как мне это сделать? - Будет ли утечка ресурсов, если я забуду о
esclient
после запроса и открыть новый в следующий раз? Если да, как мне вылечить это / закрыть открытое соединение?
Кроме того, те же вопросы для API Python memcached / Redis. я делаю client = Client("127.0.0.1")
несколько раз в течение каждого запроса пользователя.
Извините, может показаться глупым вопросом, но я немного запутался.
Заранее спасибо!
0 ответов
Для клиента python elasticsearch у вас должен быть только один экземпляр и продолжать его использовать.
Если вы создадите новые, некоторые соединения останутся висящими, но и ваше приложение, и сам elasticsearch будут оплачивать накладные расходы по созданию и поддержке дополнительных соединений, что не очень хорошо.
Если это приложение Django или Flask, вы можете создать специальный файл ресурсов для elasticsearch и создать соединение, как показано ниже, и повторно использовать его везде.
ESCLIENT = Elasticsearch()
Импортируйте ESCLIENT повсюду и используйте его повторно.