Как использовать клиент AsyncElasticsearch с FastAPI?Python

Программы на Python
Ответить
Anonymous
 Как использовать клиент AsyncElasticsearch с FastAPI?

Сообщение Anonymous »

У меня вопрос: была ли моя реализация достаточно хороша и есть ли лучший способ реализовать клиент AsyncElastichsearc с FastAPI, чтобы он был более управляемым и простым в управлении.
Текущая реализация. >
Я создаю зависимость в FastAPI для использования AsyncElasticsearch

Код: Выделить всё

async def get_es():
elastic_cred = get_elastic_cred()
es = AsyncElasticsearch(**elastic_cred)
try:
yield es
finally:
await es.close()
Я использовал эту зависимость в конечной точке Fastapi, как показано ниже

Код: Выделить всё

@router.get("/chat/conversations")
async def get_conversations_api(
req: ConversationsQueryParams = Depends(ConversationsQueryParams),
user: User = Depends(get_user_info),
db: PgDb = Depends(get_db),
es: AsyncElasticsearch = Depends(get_es),
):
pass
Тогда при каждом вызове API будет создаваться новое соединение Elasticsearch, а затем закрываться после завершения работы API.
На данный момент это заставляет меня такое ощущение, что на создание ES-соединения и закрытие этого API потребуются дополнительные затраты времени.
У меня возникла другая идея использовать клиент AsyncElasticsearch в качестве синглтона, но я не уверен, что это правильный способ справиться Соединение AsyncElasticsearch, поскольку я
не нашел никаких рекомендаций в документе https://elasticsearch-py.readthedocs.io/en/v8.8.2/.
Пожалуйста, помогите мне уточнить и какой путь лучше?

Подробнее здесь: https://stackoverflow.com/questions/767 ... th-fastapi
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»