Асинхронная запись в файл из функций Azure

У меня есть функция Azure, которая запускается при загрузке BLOB-объекта, указанный BLOB-объект содержит текстовый файл с несколькими строками, каждая из которых содержит информацию о человеке. Функция считывает файл и вставляет KeyValuePair в очередь Azure для каждой строки.

Затем у меня есть еще одна функция Azure, которая запускается упомянутой ранее очередью и массово выполняется асинхронно, поскольку первая функция сохраняет в очереди тысячи пар KeyValuePair.

Что я хочу сделать, так это то, что когда каждая KeyValuePair обрабатывается второй функцией, я хочу записать в файл ответов, который будет отформатирован так же, как входной файл в 1-й функции; каждая строка содержит информацию о человеке. Следовательно, каждое выполнение второй функции будет записывать новую строку в файл ответов (который также является большим двоичным объектом). Как бы вы этого добились?


person Lisgaira    schedule 18.04.2017    source источник


Ответы (1)


Похоже, вы могли бы использовать добавлять большие двоичные объекты чтобы добавить строку текста для каждого элемента очереди.

Вот пример привязки, которую вы можете использовать (обратите внимание на направление inout):

{
  "type": "blob",
  "name": "appendBlob",
  "path": "container/{name}.txt",
  "connection": "AzureWebJobsStorage",
  "direction": "inout"
}

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

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

person Mikhail Shilkov    schedule 18.04.2017
comment
CloudAppendBlob поддерживается. См.: github.com/Azure/Azure-Functions/issues/165. . Мы обновим документацию, чтобы отразить это. - person Ling Toh; 29.04.2017
comment
@LingToh Спасибо, обновил ответ с образцом привязки inout - person Mikhail Shilkov; 29.04.2017