Чтение файла из хранилища BLOB-объектов, поскольку readableStream останавливается между
Я читаю большой двоичный объект типа CSV размером около 38 МБ (1,5–2 миллиона строк) из хранилища Azure blob как readableStream и обрабатываю его построчно. В процессе обработки я выполняю некоторые проверки и выполняю операцию с БД. Мой код работает должным образом при локальном использовании azurite npm, однако он застревает между ними, когда я обрабатываю его с использованием хранилища BLOB-объектов Azure. Это фрагмент кода
public async downloadFileAsReadableStream(fullFileName: string): Promise<NodeJS.ReadableStream | undefined> {
const blobServiceClient = BlobServiceClient.fromConnectionString(connectionString);
this.containerClient = blobServiceClient.getContainerClient(containerName);
logger.info(`Start reading file: ${fullFileName} from container: ${this.containerName}`);
const downloadBlockBlobResponse = await this.containerClient
.getBlockBlobClient(fullFileName)
.download();
return downloadBlockBlobResponse.readableStreamBody;
}
const processStream = async (readableStream: NodeJS.ReadableStream) => {
try {
console.time("File processing completed in");
const parser = readableStream.pipe(csvParser());
for await (const row of parser) {
const dbRecord = await dbOperation(row);
}
await onStreamEnd();
} catch (err) {
logger.error(err);
}
}
Я новичок в Nodejs и не уверен, что правильно обработал обратное давление, может ли мой код быть узким местом для хранилища BLOB-объектов или базы данных? Я думаю, что мой код выполняется последовательно, т.е. цикл for await будет ждать обработки строки, пока не будет выбрана следующая строка, правильно ли я понимаю? Также я получил несколько сбоев для
GetBlobProperties
прикрепляя снимок к тому же. Пожалуйста, помогите, как мне отладить это (предположим, что доступ к лазурному порталу ограничен).Ошибки API BLOB