Я обсуждаю, создать ли глобальный boto3.Session
для моего клиента OpenSearch Python или создать новый сеанс в начале каждой конечной точки. Я нигде не могу найти документацию о том, когда истекает срок действия сеансов или истекает ли он. Каждый вызов boto3.Session()
обходится мне в задержку в 50–100 мс, поэтому было бы здорово, если бы я мог просто создать глобальный звонок, и его срок действия никогда не истечет. Любые рекомендации будут очень признательны.
Контекст: я настроил веб-службу с балансировкой нагрузки в общедоступной подсети для подключения к моему кластеру OpenSearch в частной подсети, оба в одном VPC. Веб-служба балансировки нагрузки — это приложение FastAPI.
Срок действия boto3.Session
не истекает, если не истекут ваши учетные данные. Таким образом, поддержание одного глобального сеанса имеет смысл.
Я не уверен, как структурирован ваш код, но вы можете найти базовый пример ниже:
from fastapi import FastAPI
import boto3
app = FastAPI()
session = boto3.Session() # ← global reusable boto3 session
@app.get("/some-endpoint")
def some_endpoint():
client = session.client('opensearch')
# ...
return {"message": "Success"}
С таким же успехом вы можете добавить его в state
при запуске приложения и получать к нему доступ в конечной точке с помощью request.state
, как показано здесь и здесь . Это будет особенно полезно при работе с большими приложениями.
Огромное спасибо Илья!