gpt4 book ai didi

python - 使用 python 在函数应用程序中绑定(bind)来自 Azure blob 的输入

转载 作者:太空宇宙 更新时间:2023-11-03 19:43:43 25 4
gpt4 key购买 nike

我在 azure blob 存储中有一个 csv 文件,我想打开该文件并根据用户输入获取某些数据。我有两个问题:

1) local.settings.json 中的空 AzureWebJobsStorage 值

我尝试使用 AzureWebJobsStorage 输入绑定(bind),但该值似乎为空。我不确定如何在 local.settings.json 中编辑什么值。因此,出现此错误:

Executed 'Functions.HttpExample' (Failed, Id=3a9309d6-7019-4de6-a8d2-43c89921b0f6) [18-Feb-20 9:40:36 AM] System.Private.CoreLib: Exception while executing function: Functions.HttpExample. Microsoft.Azure.WebJobs.Host: Value cannot be null. [18-Feb-20 9:40:36 AM] Parameter name: connectionString.

我使用存储帐户的连接字符串更新了该值。还是不行。

函数.json:

{
"type": "blob",
"direction": "in",
"name": "container_name",
"path": "blob_name/file_name.csv",
"connection": "AzureWebJobsStorage"
}

我使用的变量名称是否正确?因为我还收到了另一个错误:

The specified blob does not exist.

但是 blob 存在于存储中。

2)如何显示 csv 内的所有数据(假设上述问题已解决)

这是我当前在 __init__.py 中的代码:

def main(req: func.HttpRequest, inputblob: func.InputStream) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')

section = req.params.get('section')
bound = req.params.get('bound')
km_location = req.params.get('km_location')
location = req.params.get('location')
if not section:
try:
req_body = req.get_json()
except ValueError:
pass
else:
section = req_body.get('section')

if section and bound and km_location:
#pass the following user input to the following function and use them to retrieve remaining info
#from csv (stored in blob) to user.
result(section, km_location, bound, location).getResult()

return func.HttpResponse(f"Hello {section}, {bound}!")

最佳答案

关于function.json中属性的定义可以引用这个文档:configuration .

name 是在函数代码中表示 blob 的变量。它在函数代码中应该是相同的,并且可以是您想要的任何变量。

下面是我的测试function.json,您也可以引用我提供的链接中的示例。

{
"name": "inputBlob",
"type": "blob",
"path": "test/test.csv",
"connection": "AzureWebJobsStorage",
"direction": "in"
}

关于如何读取csv文件,可以引用我的函数代码。

import logging
import azure.functions as func
import csv
import codecs


def main(req: func.HttpRequest,inputBlob: func.InputStream) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
reader=csv.reader(codecs.iterdecode(inputBlob,'utf-8'))
for line in reader:
logging.info(line)

name = req.params.get('name')
if not name:
try:
req_body = req.get_json()
except ValueError:
pass
else:
name = req_body.get('name')

if name:
return func.HttpResponse(f"Hello {name}!")
else:
return func.HttpResponse(
"Please pass a name on the query string or in the request body",
status_code=400
)

这是我的测试结果,希望对您有所帮助,如果您还有其他问题,请随时告诉我。

enter image description here

关于python - 使用 python 在函数应用程序中绑定(bind)来自 Azure blob 的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60278042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com