代码之家  ›  专栏  ›  技术社区  ›  faroukcharkas

在我的FastAPI应用程序中,将boto3.会话创建放在哪里?

  •  0
  • faroukcharkas  · 技术社区  · 1 年前

    我在争论是否要创建一个全球 boto3.Session 对于我的OpenSearch Python客户端,或者在每个端点的开头创建一个新会话。我在任何地方都找不到有关会话何时到期或是否到期的文档。每一个 boto3.Session() 调用的延迟为50ms-100ms,所以如果我能创建一个全局调用并使其永不过期,那就太好了。如有任何指导,我们将不胜感激。

    上下文 我已经在一个公共子网上设置了一个负载平衡Web服务,以连接到我的OpenSearch集群的一个私有子网上,两者都在同一个VPC中。负载平衡Web服务是一个FastAPI应用程序。

    1 回复  |  直到 1 年前
        1
  •  1
  •   Ilya Khrustalev    1 年前

    这个 boto3.Session s不会过期,除非您的凭据过期。因此,维护一个全局会话是绝对有意义的。

    我不确定你的代码是如何结构化的,但你可以在下面找到一个基本的例子:

    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"}