【发布时间】:2021-12-14 08:15:23
【问题描述】:
我在使用 Python 和 BlobTrigger 读取内容/数据时遇到问题。 我使用本地环境并遵循文档 (https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-blob-trigger?tabs=python)。 当我将文件上传到本地 blob 模拟器时,该函数正在侦听并且成功触发。 我也可以在变量中获取文件路径/文件名,但无法读取上传文件的内容。
当我尝试获取内容时,它总是显示一个空字符串或数组。
这是我的functions.json文件:
{
"scriptFile": "__init__.py",
"bindings": [
{
"name": "myblob",
"type": "blobTrigger",
"direction": "in",
"path": "log/SystemLog/{name}",
"connection": ""
}
]
}
这是我的 init.py 文件: 导入日志 将 azure.functions 导入为 func
def main(myblob: func.InputStream):
print(myblob.name)
print(myblob.length)
print(myblob.readlines())
这是在控制台中打印的内容:
[2021-10-29T07:27:25.053Z] Host lock lease acquired by instance ID '000000000000000000000000F86KCB51'.
[2021-10-29T07:27:25.124Z] Worker process started and initialized.
[2021-10-29T07:27:46.941Z] Executing 'Functions.BlobTriggerLocalTest' (Reason='New blob detected: log/SystemLog/testfile.txt', Id=3981bd58-accb-4c9c-b3e4-fe33b1a74522)
[2021-10-29T07:27:46.948Z] Trigger Details: MessageId: 7c575bad-88b7-46d4-b5bf-67b90fe0ab4d, DequeueCount: 1, InsertionTime: 2021-10-29T07:27:46.000+00:00, BlobCreated: 2021-10-29T07:27:43.000+00:00, BlobLastModified: 2021-10-29T07:27:43.000+00:00
[2021-10-29T07:27:47.032Z] log/SystemLog/testfile.txt
[2021-10-29T07:27:47.037Z] None
[2021-10-29T07:27:47.042Z] []
[2021-10-29T07:27:47.068Z] Executed 'Functions.BlobTriggerLocalTest' (Succeeded, Id=3981bd58-accb-4c9c-b3e4-fe33b1a74522, Duration=204ms)
我尝试了一些解决方案来解决这个问题。
第一件事是配合文档https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-blob-input?tabs=python。 但是对我来说,functions.json 文件中的变化并不完全清楚。我试着输入
{
"name": "inputblob",
"type": "blob",
"dataType": "binary",
"path": "log/SystemLog/{name}",
"connection": "",
"direction": "in"
},
在 functions.json 文件中,并将 inputblob 作为第二个参数添加到主方法中,但 len(inputblob) 也会打印 0。
我想我也可以使用并从 azure.storage.blob 导入 BlobServiceClient。 但我猜 BlobServiceClient 需要一个单独的连接字符串,我想避免这种情况。
【问题讨论】:
标签: python azure azure-functions