gpt4 book ai didi

python - 如何将数据流式传输到与 Azure Function 绑定(bind)的输出 blob?

转载 作者:行者123 更新时间:2023-12-03 05:23:43 24 4
gpt4 key购买 nike

我正在尝试从 API 检索一个大文件并将其保存在 Azure 存储帐户上,因此我正在设计一个 Azure 函数。我不希望我的代码下载所有数据,然后写入所有数据,我可以通过此 API 获得数据输入流,并且我希望将数据流式传输到输出 blob。

这是一个小例子

import azure.functions as func

def main(req: func.HttpRequest, outputblob: func.Out[func.InputStream]) -> func.HttpResponse:
name = "stranger"

# mimick a stream
for char in name:
outputblob.set(char)

return func.HttpResponse(
"Hello "+name,
status_code=200
)

这是我的function.json:

{
"scriptFile": "__init__.py",
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get",
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "$return"
},
{
"type": "blob",
"direction": "out",
"name": "outputblob",
"path": "container/hello.txt",
"connection": "connection_storage"
}
]
}

当我从存储中打开文件 container/hello.txt 时,它只包含最后一个字符“r”,并且只有 1 个字节。

我认为 outputblob.set(data) 将数据覆盖到输出 blob。

如何流式传输数据并将其附加到我的输出 blob 中?我宁愿使用输出 blob 绑定(bind),但我可以使用“ContainerClient”对象。

(编辑:在 docs 中,他们指定我们可以使用

Streams as func.Out[func.InputStream]

)

最佳答案

在循环中,当您模仿流时,每次迭代都会覆盖输出 blob 的内容,这就是为什么最后您会收到最后一个字母。

解决方案:将整个字节数组分配给outputblob

参见https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-blob-output?tabs=python供引用。

关于python - 如何将数据流式传输到与 Azure Function 绑定(bind)的输出 blob?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70394168/

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