将多个blob输入azure函数python
我正在python中为Azure函数工作。我试图读入两个blob,一个是触发的,一个是静态的 当我读入它们时,两个blob都指向触发的blob(URI相同)。如何正确输入和使用两个blob 我的绑定看起来像:将多个blob输入azure函数python,python,azure,azure-functions,blob,Python,Azure,Azure Functions,Blob,我正在python中为Azure函数工作。我试图读入两个blob,一个是触发的,一个是静态的 当我读入它们时,两个blob都指向触发的blob(URI相同)。如何正确输入和使用两个blob 我的绑定看起来像: { "name": "techdatablob", "type": "blobTrigger", "direction": "in",
{
"name": "techdatablob",
"type": "blobTrigger",
"direction": "in",
"path": "path1/{name}",
"connection": "example"
},
{
"name": "crmdatablob",
"type": "blob",
"direction": "in",
"path": "path2/data.xlsx",
"connection": "example"
},
{
"name": "outputblob",
"type": "blob",
"direction": "out",
"path": "path3/out.xlsx",
"connection": "example"
}
而init.py文件以以下开头:
def main(techdatablob: func.InputStream, crmdatablob: func.InputStream, outputblob: func.Out[func.InputStream]):
logging.info(f"Python blob trigger function processed blob \n"
f"Name: {techdatablob.name}\n"
f"Blob Size: {techdatablob.length} bytes")
print(techdatablob.uri)
print(crmdatablob.uri)
当我读入它们时,两个blob都指向触发的blob(URI是
相同)。如何正确输入和使用两个blob
事实上,您已经输入了多个blob,问题来自azure函数blob绑定元数据不是来自函数主机,因此blob名称、blob长度、uri等无法获得正确的值。但事实上,它们的数据是不同的(对象也不同)
您可以执行以下操作进行测试:
import logging
import azure.functions as func
def main(techdatablob: func.InputStream, crmdatablob: func.InputStream) -> None:
logging.info("-----"+techdatablob.read().decode('utf-8'))
logging.info("-----"+crmdatablob.read().decode('utf-8'))
检查此错误页:
我认为问题不在你这边,而是功能设计的问题。使用storage sdk获取元数据应该没有问题。这应该可以正常工作,您会遇到任何错误吗?我不会遇到任何错误,除了以后遇到的错误,因为文件是相同的。请注意,我只在本地进行了测试,当要求提供一个主体时,我得到了一个已知文件的路径,例如“path1/data.xlsx”,它可以只拉入该文件。您可以显示代码结构吗?我在init.py文件示例中添加了更多代码。这里有一些定义和一些导入,但除此之外,仅此而已。我认为对于元数据,python的azure绑定目前仍然存在一些问题。事实上,您输入的确实是两个不同的blob对象,但输入部分无法获取uri等元数据值。谢谢bowman!这是有道理的-尽管奇怪的是他们还没有解决这个问题。。。然后我尝试将文件读入pd.read_excel,解码('utf-8')给了我一个错误:
UnicodeDecodeError:'utf-8'编解码器无法解码第16位的字节0xc3:无效的延续字节
这是一个blob问题,还是数据传输的问题?@Dave你在使用panda吗?我不确定,看起来解码方式是错误的(只是猜测),你可以用谷歌搜索它或者问一个问题。是的,通过pandas使用pd.read_excel()。好的,不用担心,谢谢你的帮助!!