У меня есть серия файлов, которые мне нужно загрузить. Когда каждый файл загружается, на нем будет выполняться операция. Когда все файлы загружаются, я хочу выполнить задачу во всех различных типах файлов. Технически процесс может запускаться после загрузки любого файла, но если я загружу сто файлов, я не хочу, чтобы он выполнялся 100 раз.Запуск задачи, когда список задач завершен
Я использую Azure Functions, так что это должно быть вызвано каким-то образом, либо через триггеры blob, table, queue или timer (или какой-либо другой триггер).
Вот мои мысли о том, как я выполнил бы это:
- принудительную новый файл в хранилище больших двоичных объектов
- триггер Blob активируется
- Файл обрабатывается
- кнопочным файл хранения таблицы
- Очистить очередь
- Push flag to queue with visibility задержка 1 мин
- очередь запускаемой с
IQueryable<TableEntity>
в качестве дополнительного входа- Получить все записи таблицы
- Выполнение задачи по каждому типу файла (запись таблицы)
- Удаления обработанных записей из таблицы
Я не очень люблю поддерживать сброс очереди ue, но если файлы X будут загружены за последнюю минуту обработки, следующая задача будет запускаться X раз, что будет потрачено впустую ресурсов, особенно если X высок. Так что действительно, в этом случае, в лучшем случае должен быть только один элемент в очереди.
Я продолжаю думать, что триггер blob с задержкой видимости может иметь больше смысла, но, насколько я знаю, этого не существует.
Так это правильный способ решить эту проблему с помощью того, что доступно? Есть ли способ лучше?
Можете ли вы объяснить, что делает действие, которое вы хотите запустить для каждого отдельного типа файла? Обновляет ли файлы? Прочитайте файлы? Может ли он запускаться в одном файле более одного раза? –
Предположим, что в исследовательской лаборатории несколько файлов. Триггер blob проходит через все новые файлы и стандартизирует файлы. Когда все стандартизация завершена, мы начинаем выполнять более сложную обработку и аналитику на основе каждого исследования (и может быть обновлено несколько исследований). Могу ли я запустить аналитику n раз для m исследований? Вероятно. Но я бы сэкономил массу денег и ресурсов, просто обработав несколько раз. Это также упрощает историю мониторинга, поэтому, если возникает ошибка, мы не получаем n ошибок для одного и того же исследования. –
Я думаю, что это довольно странный дизайн, с которым вы идете. Как вы будете уверены, что файлы, загруженные в течение 1-минутного окна, относятся к одному и тому же набору файлов? Что делать, если одновременно загружаются два исследователя? Возможно, вы должны загрузить файлы в разных папках или просто загрузить все файлы в виде zip (если размер файла позволяет это) – sjkp