Azure Функции Blob Trigger не обрабатывает все BLOB-объекты - PullRequest
1 голос
/ 21 января 2020

В моем контейнере хранится около 35 000 файлов BLOB-объектов. некоторые из них старше до развертывания функции, некоторые после развертывания приложения функции.

Вот моя подпись функции

 public async Task Run([BlobTrigger("portal/{filePath}")]Stream blob, Uri uri,
            IDictionary<string, string> metadata, string filePath, ILogger log)
        {
         log.LogInformation($"{filePath}\n Size: {blob.Length} Bytes");

       // rest of the code
        }

Насколько я понимаю, эта функция будет непрерывно обрабатывать все старые и новые файлы. Но когда я вижу этот журнал на портале Azure, вот что происходит.

  • 2020-01-21T09: 02: 56.103 [Информация] Выполняется 'watch-portal-blob' (Succeeded, Id = 37cfaf56-3be2-4e6f-9e46-3558389daf4f)
  • 2020-01-21T09: 04: 33 Никаких новых трасс за последние 1 мин.
  • // больше отметок времени
  • 2020-01-21T10: 51: 34 Нет новых следов за последние 108 мин.
  • 2020-01-21T10: 52: 34 Нет новых следов за последние 109 мин ( s).
  • 2020-01-21T10: 53: 34 За последние 110 минут не было никаких новых трасс.
  • 2020-01-21T10: 54: 34 Сеанс потоковой передачи журнала закончилась из-за истечения времени ожидания 120 мин.

Произвольно обрабатывает несколько файлов, затем go переходит в состояние ожидания, а затем через несколько часов снова обрабатывает еще 20 файлов. Может кто-нибудь указать мне правильно настроить триггер BLOB-объекта для обработки всех существующих больших двоичных объектов, а также новых больших двоичных объектов без перерыва?

К вашему сведению: все мои большие двоичные объекты представляют собой простые XML файлы размером менее 20 КБ каждый. Все, что он делает - читает XML проверяет и сохраняет его в MongoDB. Если я запускаю это задание на локальном компьютере, через 1 минуту будет обработано не менее 50 файлов, поэтому 30 тыс. Файлов должны быть заполнены задолго до этого. В пятницу 17 января было около 35 тыс. Файлов, сегодня, 20 января, еще есть 32 тыс. Файлов (новые добавления около 2 тыс.). Это означает, что он обработал только 5 тыс. Файлов за 3 дня.

Ответы [ 2 ]

1 голос
/ 21 января 2020

Я рекомендую прочитать Триггер - квитанции BLOB и Триггер - опрос

. Для вашего решения следует рассмотреть сетку событий Azure для уведомление в режиме реального времени о том, что BLOB-объект был создан / удален в хранилище BLOB-объектов.

0 голосов
/ 21 января 2020

Под капотом используется уведомление о событии для запуска вашей функции. Это означает, что ваши старые BLOB-объекты не будут запущены, пока вы что-то не измените (например, метаданные).

В качестве альтернативы вы можете создать приложение Logi c и использовать Azure Storage Connector + Перечислите операции с BLOB-объектами, а затем объедините текущую Azure функцию в рабочем процессе, передавая каждый BLOB-объект.

https://docs.microsoft.com/en-us/connectors/azureblobconnector/#list -blobs

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...