【问题标题】:Cannot instantiate `BlobServiceClient` from within Azure App Services fastAPI application无法从 Azure App Services fastAPI 应用程序中实例化“BlobServiceClient”
【发布时间】:2022-11-10 11:16:20
【问题描述】:

我正在尝试使用 azure-storage-blob 的 BlobServiceClient 类从 Azure 存储帐户下载数据。 当我从 Jupyter 笔记本运行这个 sn-p 时,我设法毫无问题地检索数据:

from azure.storage.blob import BlobServiceClient
blob_service_client = BlobServiceClient.from_connection_string(CONNECTION_STRING)
blob_client = blob_service_client.get_blob_client(path, 'processed.csv')

CONNECTION_STRING 是我的 Azure 存储帐户的连接字符串,path 是指向此存储帐户的 processed.csv 数据的路径。

但是,当从部署到 Azure 应用服务的 fastAPI 应用程序中运行相同的脚本时,我无法实例化 BlobServiceClient。在 Jupyter notebook 下,print(blob_service_client) 返回一个 BlobServiceClient 对象,在 Azure App Services 下它返回 null。

我正在使用 azure-storage-blob==12.13.1,它在我的 requirements.txt 中指定。

【问题讨论】:

  • CONNECTION_STRING 来自哪里?环境变量?硬编码?
  • 感谢您的回复。 CONNECTION_STRING 是一个环境变量。我能够大摇大摆地打印它,所以我确认它正在被正确读取。

标签: python azure-blob-storage fastapi azure-appservice


【解决方案1】:

我使用下面的示例代码从 blob 获取文件数据。

app = FastAPI()

@app.get("/")
def  read_root():
return {"Hello": "World"}

@app.get("/items")
def  download_blob():
    try:
        name = "<Filename>"
        container_name = "<Container Name."
        connect_str = "<Connection String>"
        blob_service_client = BlobServiceClient.from_connection_string(connect_str)
        blob_client = blob_service_client.get_blob_client(container=container_name, blob=name)
        print(blob_client.download_blob().readall())
        return {"File downloaded":blob_client.download_blob().readall()}

    except  Exception  as e:
        print(e.message)
        return e.message

部署在天蓝色之前的结果

在 Azure 中部署后

通过 VS Code 部署。确保所有需要的包都部署在 azure 中。

Web 应用响应。

【讨论】:

    猜你喜欢
    • 2020-02-24
    • 2011-08-17
    • 2013-07-31
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    • 2014-03-30
    相关资源
    最近更新 更多