Как узнать, когда загрузка нескольких файлов в хранилище Azure завершена в ASP.NET
Мы используем функцию Azure для обработки документов, загруженных в BLOB-хранилище Azure. Нам нужно отправить электронное письмо после успешной загрузки всех документов в BLOB-объекте (т.е. 50 файлов за один раз) в качестве статуса загрузки.Как мы можем получить статус, что все файлы успешно загружены на наш BLOB-объект?
2 ответа
Я не верю, что в Azure есть встроенная функция, которая обеспечит вам программный статус или вызов события. Тем не менее, возможное решение будет следующим:
- Перед загрузкой всех 50 файлов в виде пакета, создайте файл JSON, который содержит имена всех файлов, которые будут загружены. Давайте назовем этот файл JSON списком пакетов.
- Сначала загрузите файл Batch List, а затем загрузите все свои файлы, которые вам нужно загрузить.
- В процессе опроса определите, существуют ли все файлы в списке партий в хранилище BLOB-объектов. Если нет, то игнорируйте до следующего раза, когда вы сможете это сделать. Как только вы определите, что все файлы в списке пакетов существуют в хранилище больших двоичных объектов, отправьте электронное письмо в соответствии с вашими требованиями. Удалите файл списка партий.
Это основная концепция. Это, очевидно, может быть более изощренным, но я надеюсь, что вы поняли.
У Azure Functions есть удобное расширение, которое позволяет вам делать это, Azure Durable Functions. Здесь вы ищете схему монитора, опрашивающую до тех пор, пока не будут выполнены определенные условия. Вот пример, который проверяет состояние погоды и затем отправляет SMS с помощью 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.
Требуется больше деталей, прежде чем будет предоставлено правильное решение / рекомендация.
Как вы обрабатываете эти файлы?
- Реагируете ли вы на событие, описанное ниже?
- Вы обрабатываете эти файлы из очереди, поэтому у вас нет доступа ко всем файлам?
Вы можете использовать один из следующих подходов в зависимости от ваших требований:
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-объекта предоставляется в качестве входных данных для функции.
Триггер Event Grid имеет встроенную поддержку событий BLOB-объектов и может также использоваться для запуска функции при обнаружении нового или обновленного BLOB-объекта. Например, см. Учебник "Изменение размера изображения с помощью сетки событий".
Используйте Event Grid вместо триггера хранилища BLOB-объектов для следующих сценариев:
- Учетные записи для хранения BLOB-объектов
- Высокая шкала
- Минимизация задержки