【问题标题】:Python Azure Blob Storage Input Stream IncompletePython Azure Blob 存储输入流不完整
【发布时间】:2022-10-08 12:31:23
【问题描述】:
我有读取 xml 文件的天蓝色 blob 触发器功能。
def main(myblob: func.blob.InputStream):
logging.info(f"Python blob trigger function processed blob \n"
f"Name: {myblob.name}\n")
data = myblob.read()
logging.info(data)
data = ET.fromstring(data)
return
请注意,该函数是使用 vscode 功能创建的
当数据通过 XML 解析器时,我收到数据格式错误的错误消息
当我检查 Azure 函数的 Azure 见解日志时,它似乎没有完全读取 xml 文件。
XML 文件大约 150KB,大约 4000 行。抱歉不能举个例子,因为它超出了这里的字符数限制。
看起来它截断了文件输出。
反正有没有完全读取blob文件?
谢谢
【问题讨论】:
标签:
python
azure-functions
azure-blob-trigger
【解决方案1】:
已经晚了,但我仍然会写,因为它可能会帮助其他人。
还有另一个选项可用于读取文件,即我们可以使用 SAS 为文件创建一个 url,当它被 blob 触发时,然后您可以使用该 url 从 blob 存储中获取文件。
这是一个例子:-
containerSas = generate_container_sas(
account_name = os.environ['remoteStorageAccountName'],
account_key = os.environ['remoteStorageAccountKey'],
container_name = os.environ['remoteStorageInputContainer'],
permission = ContainerSasPermissions(read=True),
expiry=datetime.utcnow() + timedelta(hours=1)
)
url = 'https://'+os.environ['remoteStorageAccountName']+'.blob.core.windows.net/' + blobName + "?" + containerSas
您可以使用 url 来获取文件。我希望这有帮助。