如何解决在 azure 中如何根据 blob 存储文件内容进行 api 调用?
我想在这个问题的开头说我是 Azure 的初学者。
我希望能够将一个 excel 文件上传到我的 blob 存储中,其中每一行代表传递给 api 调用的参数。然后我想获取每个 api 调用的结果,并将它们放在 excel 文件中每一行的最后一列。
我尝试使用数据工厂,但找不到根据文件内容更改 api 调用的方法,也无法写入 excel 文件。因此,我决定尝试 Azure 逻辑应用程序,该应用程序会根据上传到 Blob 存储的文件触发,然后触发 azure 函数。
我遇到的问题是,我不知道如何将 excel 文件中的行内容传递给 azure 函数,以便我可以创建 API 调用。我也不完全确定设置应该是什么样子,我之前没有使用过 Azure 功能。
如果使用 azure 逻辑应用 + 函数不理想,我也愿意接受完全不同的方法。
解决方法
如果您使用的是 Python Azure 函数,请尝试以下代码:
import logging
from os import remove
import azure.functions as func
import tempfile
import pandas as pd
import requests
def main(myblob: func.InputStream):
logging.info(f"Python blob trigger function processed blob \n"
f"Name: {myblob.name}\n"
f"Blob uri: {myblob.uri} bytes")
temp_file_path = tempfile.gettempdir() + "\\temp.xlsx"
#download .xlsx as a temp file
with open(temp_file_path,"w+b") as temp_blob:
temp_blob.write(myblob.read())
#read .xlsx and send request
dfs = pd.read_excel(temp_file_path,engine='openpyxl')
for reqInfo in dfs.values:
logging.info('request method:'+ reqInfo[0])
logging.info('request URL:'+ reqInfo[1])
response = requests.request(reqInfo[0],reqInfo[1])
logging.info(response.status_code)
#remove temp file after use
remove(temp_file_path)
requirements.txt:
azure-functions
pandas
openpyxl
requests
这是我的演示 .xlsx 文件内容:
将文件上传到我在函数触发器中指定的容器后,结果如下:
所以基本上,您只能使用 Azure 功能来满足您的要求。
有关 Azure 函数 blob 触发器的更多信息,see here。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。