We are using azure function to process the documents uploaded on azure storage blob. We need to send an email after successful uploading of all documents on blob(i.e. 50 file at one time) as uploading status. How we can get the status that all files are uploaded successfully on our blob?
3 回答
Azure Functions 有一个简洁的扩展,可让您完全做到这一点,即 Azure Durable Functions。您在这里寻找的是监视器模式,轮询直到满足某些条件。这是一个检查天气状态然后使用 Twilio https://docs.microsoft.com/en-gb/azure/azure-functions/durable/durable-functions-monitor发送短信的示例。
代码在 Github 上https://github.com/Azure/azure-functions-durable-extension/tree/master/samples/csx - 查看从 E3 开始的示例。
我不相信 Azure 中有内置功能可以以编程方式为您提供状态或引发事件。但是,可能的解决方案如下:
- 在批量上传所有 50 个文件之前,创建一个 JSON 文件,其中包含要上传的所有文件的名称。我们将此 JSON 文件称为批处理列表。
- 首先上传批处理列表文件,然后上传您需要上传的所有文件。
- 通过轮询过程,确定 Blob 存储中是否存在批处理列表中的所有文件。如果没有,请忽略,直到下次您能够这样做。一旦您确定 Blob 存储中存在批处理列表中的所有文件,然后根据您的要求发送电子邮件。删除批处理列表文件。
这是一个基本概念。它显然可以更复杂,但我希望你明白这一点。
在提供适当的解决方案/建议之前,需要更多详细信息。
你是如何处理这些文件的?
- 您是否对如下所述的事件做出反应?
- 您是否正在处理队列中的这些文件,这就是您无法查看所有文件的原因?
您可以根据自己的要求使用以下方法之一:
https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-blob
https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-event-grid
当检测到新的或更新的 Blob 时,Blob 存储触发器会启动一个函数。Blob 内容作为函数的输入提供。
事件网格触发器具有对 blob 事件的内置支持,也可用于在检测到新的或更新的 blob 时启动函数。有关示例,请参阅使用事件网格调整图像大小教程。
在以下情况下使用事件网格而不是 Blob 存储触发器:
- Blob 存储帐户
- 高规模
- 最小化延迟